
第十四章 知识总结
本文主要讲解 NumPy 的核心知识点总结,涵盖其作为 Python 科学计算基石的关键概念与最佳实践,适合快速回顾、面试准备或系统学习。
ndarray(N 维数组)numpy.ndarray 展开。.shape:维度大小(元组).dtype:元素数据类型(如 int32, float64, U10).ndim:维度数量.size:总元素个数a = np.array([[1, 2], [3, 4]], dtype=np.float32)
print(a.shape, a.dtype) # (2, 2) float32方法 | 用途 |
|---|---|
| 从列表/元组创建 |
| 全零/全一阵 |
| 未初始化数组(快) |
| 等差整数序列(类似 |
| 指定数量的等间距浮点数 |
| 单位矩阵 |
| 随机数组 |
✅ 推荐显式指定
dtype避免隐式转换。
arr.reshape(new_shape)(返回视图,若可能)arr.flatten()(副本) vs arr.ravel()(视图优先)arr.T 或 arr.transpose(axes)np.expand_dims(arr, axis)np.squeeze(arr)(移除长度为1的轴)a = np.array([1, 2, 3])
b = a[:, np.newaxis] # → shape (3, 1)操作 | 函数 |
|---|---|
水平拼接 |
|
垂直拼接 |
|
深度拼接 |
|
分割 |
|
⚠️ 注意
:concatenate 要求除拼接轴外其他维度一致。
规则(从后往前对齐):
✅ 示例:
(3,) + (2, 3) → (2, 3)(2, 1) + (3,) → (2, 3)❌ 失败:
(2, 3) + (3, 2) → 最后一维 3≠2 且都不为1🔑 广播是向量化运算的核心,避免显式循环!
+ - * / // % **== != > < >= <= → 返回布尔数组& | ~(用于布尔数组),np.logical_and/or/not& | ^ ~ << >> → 对应 np.bitwise_*np.sin, np.exp, np.sqrt, np.lognp.add.accumulate()np.add.reduce()函数 | 说明 |
|---|---|
| 求和、均值、标准差 |
| 最值 |
| 返回索引 |
| 累积和/积 |
| 沿指定轴聚合( |
arr = np.array([[1, 2], [3, 4]])
print(arr.sum(axis=0)) # [4 6]np.sort(arr):返回排序副本arr.sort():原地排序np.argsort():返回排序索引arr = np.array([1, 2, 3, 4])
filtered = arr[arr > 2] # [3 4]
# 多条件(注意括号!)
mask = (arr > 1) & (arr < 4)np.where(condition, x, y):三元运算np.select(), np.choose():多条件选择dtype=[('name', 'U10'), ('age', 'i4')]arr['name']arr.name(不推荐新项目使用)ndarray + @ 运算符numpy.linalg)操作 | 函数 |
|---|---|
矩阵乘法 |
|
转置 |
|
逆矩阵 |
|
行列式 |
|
解方程 |
|
特征值 |
|
SVD |
|
范数 |
|
✅ 优先用
solve而非inv(更稳定高效)
格式 | 函数 | 适用场景 |
|---|---|---|
|
| 单数组,高效 |
|
| 多数组打包 |
文本 |
| 小数据,可读 |
内存映射 |
| 超大数组(>内存) |
HDF5 |
| 科学大数据,跨平台 |
工具 | 关系 |
|---|---|
Matplotlib | 直接绘图 NumPy 数组 |
Pandas |
|
SciPy | 基于 NumPy,提供高级算法 |
scikit-learn | 输入要求为 NumPy 数组 |
TensorFlow/PyTorch | 张量 ↔ NumPy 数组互转 |
MATLAB | NumPy |
|---|---|
索引从 1 开始 | 索引从 0 开始 |
|
|
| 用 |
|
|
|
|
np.zeros() 比动态 append 快ravel() 默认返回视图np.memmapnp.matrixnp.matrix 和 frompyfunc“Everything is an array.” —— 用统一的 N 维数组模型,通过向量化、广播、ufunc 实现高性能数值计算。
📌 附:速查命令
import numpy as np
# 创建
a = np.arange(10).reshape(2,5)
# 运算
b = np.sin(a) + 2
# 筛选
c = b[b > 0]
# 聚合
mean_val = c.mean()
# 保存
np.save('result.npy', c)本文主要对numpy做一个总结。之前的python过渡项目部分代码已经上传至gitee,后续会逐步更新,主要受时间原因限制,当然自己也可以克隆到本地学习拓展。
公众号:咚咚王
《Python编程:从入门到实践》
《利用Python进行数据分析》
《算法导论中文第三版》
《概率论与数理统计(第四版) (盛骤) 》
《程序员的数学》
《线性代数应该这样学第3版》
《微积分和数学分析引论》
《(西瓜书)周志华-机器学习》
《TensorFlow机器学习实战指南》
《Sklearn与TensorFlow机器学习实用指南》
《模式识别(第四版)》
《深度学习 deep learning》伊恩·古德费洛著 花书
《Python深度学习第二版(中文版)【纯文本】 (登封大数据 (Francois Choliet)) (Z-Library)》
《深入浅出神经网络与深度学习+(迈克尔·尼尔森(Michael+Nielsen)》
《自然语言处理综论 第2版》
《Natural-Language-Processing-with-PyTorch》
《计算机视觉-算法与应用(中文版)》
《Learning OpenCV 4》
《AIGC:智能创作时代》杜雨+&+张孜铭
《AIGC原理与实践:零基础学大语言模型、扩散模型和多模态模型》
《从零构建大语言模型(中文版)》
《实战AI大模型》
《AI 3.0》
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。