
书: https://pan.baidu.com/s/1hMg-9fMkkzntAfHoLymQMA?pwd=2tx9
笔记如下:
- NumPy简介:NumPy是Python科学计算的基础库,提供高性能的多维数组对象(ndarray)和数学函数。
- 数组创建:
np.array([1, 2, 3])
创建一维数组np.zeros((3,3))
创建全零矩阵np.arange(10)
类似Python的range
- 数组属性:
ndarray.shape
数组维度ndarray.dtype
数据类型ndarray.size
元素总数
- 数组操作:
- 索引和切片(
arr[1:3]
) - 布尔索引(
arr[arr > 5]
) - 花式索引(
arr[[0,2,4]]
)
- 数组运算:
- 逐元素运算(
+
,-
,*
,/
) - 矩阵乘法(
np.dot(A,B)
或A @ B
) - 广播机制(不同形状数组的运算)
- 常用数学函数:
np.sin()
,np.cos()
三角函数np.exp()
,np.log()
指数和对数np.sqrt()
平方根
- 统计函数:
np.mean()
平均值np.median()
中位数np.std()
标准差
- 线性代数:
np.linalg.inv()
矩阵求逆np.linalg.eig()
特征值和特征向量np.linalg.solve()
解线性方程组
- 随机数生成:
np.random.rand()
均匀分布np.random.randn()
标准正态分布np.random.randint()
随机整数
- 文件IO:
np.save()
/np.load()
保存和加载数组np.savetxt()
/np.loadtxt()
文本文件读写
- 数组拼接与分割:
np.concatenate()
数组拼接np.vstack()
/np.hstack()
垂直/水平堆叠np.split()
数组分割
- 数组重塑:
arr.reshape((2,3))
改变形状arr.flatten()
展平为一维数组
- 排序和搜索:
np.sort()
排序np.argsort()
返回排序索引np.where()
条件搜索
- 掩码数组:
np.ma.masked_array()
处理缺失值np.ma.masked_where()
条件掩码
- 性能优化:
- 向量化操作避免循环
- 使用
np.einsum()
进行爱因斯坦求和约定
- 通用函数(ufunc):
np.add.reduce()
累加np.multiply.outer()
外积
- 结构化数组:
- 定义复合数据类型(
dtype=[('name', 'S10'), ('age', 'i4')]
) - 类似数据库表的操作
- 定义复合数据类型(
- 内存布局:
arr.flags
查看内存信息np.ascontiguousarray()
确保连续内存
- 与Pandas交互:
- Pandas的DataFrame与NumPy数组相互转换
- 使用
df.values
获取NumPy数组
- 实际应用案例:
- 图像处理(数组作为像素矩阵)
- 机器学习数据预处理
- 数值模拟和科学计算