NumPy
数组计算的常用函数。示例默认已执行 import numpy as np。
基础条目参考:NumPy 官方入门。
创建数组
np.array、zeros、ones、arange、linspace 等创建数组的方法。
从列表创建浮点数组
a = np.array([1, 2, 3], dtype=np.float32)
- 助记:
NumPy← Numerical Python(数值 Python);array是数组,dtype= data type(数据类型),float32 是 32 位浮点数。 - 使用前提:本页默认已执行 import numpy as np。
解释性示例:
a = np.array([1, 2, 3], dtype=np.float32)
print(a)
创建全零数组和等距数列
np.zeros((2, 3))
np.linspace(0, 1, 5)
- 助记:
zeros= 全零;linspace= linearly spaced(线性等距),三个参数是起点、终点、点数。 - 使用前提:两条分别创建 2×3 的全零数组、从 0 到 1 的 5 个等距数值。
解释性示例:
zeros = np.zeros((2, 3))
steps = np.linspace(0, 1, 5)
print(zeros, steps)
形状变换
reshape、transpose、concatenate、stack、squeeze、expand_dims。
改变数组形状并转置
a.reshape(2, 3).T
- 助记:
arange可按 array range(数组序列)记;reshape= 重新塑形,T= transpose(转置)。 - 使用前提:a 是含 6 个元素的数组;先改为 2×3,再转置为 3×2。
解释性示例:
a = np.arange(6).reshape(2, 3)
print(a.shape) # (2, 3)
print(a.T.shape) # (3, 2)
索引与切片
切片、布尔索引、花式索引,以及 np.where。
按条件筛选数组元素
a[a > 3]
- 助记:
boolean= 布尔值;条件先生成 True / False 数组,索引只保留 True 对应的元素。 - 使用前提:a 是已有数组;先产生布尔条件,再取出满足条件的元素。
解释性示例:
a = np.array([1, 4, 2, 8])
print(a[a > 3]) # [4, 8]
广播与运算
广播规则、矩阵乘法和 einsum。
用广播给每行加同一个向量
a + offset
- 助记:
broadcast= 广播:较小的数组按兼容维度扩展参与运算,无需手动复制每一行。 - 使用前提:a 的形状为 (2, 3),offset 的形状为 (3,);广播把同一偏移向量加到每一行。
解释性示例:
a = np.zeros((2, 3))
offset = np.array([1, 2, 3])
print(a + offset)
进行矩阵乘法
a @ b
- 助记:
matmul= matrix multiplication(矩阵乘法);@执行该运算,内侧维度必须相等。 - 作用:@ 是矩阵乘法,* 是逐元素乘法。
- 使用前提:a、b 是维度兼容的矩阵,例如 (2, 3) 与 (3, 4),结果为 (2, 4)。
解释性示例:
a = np.ones((2, 3))
b = np.ones((3, 4))
print((a @ b).shape) # (2, 4)
统计与归约
sum、mean、max、argmax 等,以及 axis 参数的含义。
分别计算每列和每行的均值
a.mean(axis=0)
a.mean(axis=1)
- 助记:
mean= 均值,axis= 轴;axis=0 沿行方向归约得到每列结果,axis=1 得到每行结果。 - 使用前提:a 是二维数组;两条分别计算每列、每行的均值。
解释性示例:
a = np.array([[1, 2, 3], [4, 5, 6]])
print(a.mean(axis=0)) # 每列均值
print(a.mean(axis=1)) # 每行均值
随机数
np.random.default_rng 生成随机数,固定随机种子。
使用独立随机数生成器
rng = np.random.default_rng(42)
- 助记:
rng← random number generator(随机数生成器);normal= 正态分布,seed(种子)决定随机序列的起点。 - 作用:同一环境中固定种子可重复生成结果;跨 NumPy 版本不保证完全相同。
- 使用前提:创建独立随机数生成器;可继续用 rng.normal(size=(2, 3)) 生成正态分布样本。
解释性示例:
rng = np.random.default_rng(42)
print(rng.normal(size=(2, 3)))
保存与读取
np.save、np.load、np.savez,保存和读取数组。
保存并加载 NumPy 数组
np.save("array-demo.npy", a)
b = np.load("array-demo.npy", allow_pickle=False)
- 助记:
save= 保存,load= 加载;.npy是 NumPy 单数组文件格式。 - 作用:会覆盖同名文件;数值数组不需要开启 pickle。
- 使用前提:a 是已有数值数组;两条分别保存和读取。
解释性示例:
a = np.arange(6)
np.save("array-demo.npy", a)
b = np.load("array-demo.npy", allow_pickle=False)
print(b)