NumPy速查手册

📦 一、创建数组

方法 说明 示例
np.array(list) 从列表创建 np.array([1,2,3])[1 2 3]
np.arange(start, stop, step) 类似 range,返回数组 np.arange(0, 10, 2)[0 2 4 6 8]
np.linspace(start, stop, num) 等间隔取 num 个点 np.linspace(0, 1, 5)[0. 0.25 0.5 0.75 1. ]
np.zeros(shape) 全零数组 np.zeros((2,3)) → 2×3 全 0
np.ones(shape) 全一数组 np.ones((2,3)) → 2×3 全 1
np.eye(N) 单位矩阵 np.eye(3) → 3×3 单位阵
np.full(shape, value) 填充指定值 np.full((2,2), 7)[[7,7],[7,7]]
np.empty(shape) 未初始化(垃圾值) 通常不用,速度最快
1import numpy as np
2
3print(np.arange(5))                # [0 1 2 3 4]
4print(np.linspace(0, 1, 3))        # [0.  0.5 1. ]
5print(np.zeros((2, 2)))            # [[0. 0.] [0. 0.]]
6print(np.eye(3))                   # 3x3 单位矩阵

🔍 二、数组属性

属性 说明 示例
ndarray.shape 维度元组 arr.shape(3, 4)
ndarray.ndim 维度数 arr.ndim2
ndarray.size 元素总数 arr.size12
ndarray.dtype 数据类型 arr.dtypedtype('float64')
ndarray.T 转置(对二维) arr.T
1arr = np.array([[1,2,3],[4,5,6]])
2print(arr.shape)   # (2, 3)
3print(arr.size)    # 6
4print(arr.T)       # [[1 4] [2 5] [3 6]]

✏️ 三、索引与切片

操作 说明 示例
arr[i, j] 索引单个元素 arr[0, 1] → 第0行第1列
arr[i] 取第 i 行 arr[1] → 第二行
arr[:, j] 取第 j 列 arr[:, 0] → 第一列
arr[start:stop:step] 切片 arr[0:2, 1:3]
arr[arr > 5] 布尔索引 返回大于5的元素
arr[[0,2], [1,3]] 花式索引 取 (0,1) 和 (2,3) 位置
 1arr = np.arange(12).reshape(3, 4)
 2print(arr)
 3# [[ 0  1  2  3]
 4#  [ 4  5  6  7]
 5#  [ 8  9 10 11]]
 6
 7print(arr[1, 2])          # 6
 8print(arr[:, 2])          # [ 2  6 10]
 9print(arr[arr > 5])       # [ 6  7  8  9 10 11]
10print(arr[[0,2], [1,3]])  # [1, 11]  → (0,1)和(2,3)

🔢 四、形状操作

方法 说明 示例
reshape(new_shape) 改变形状(返回新数组) arr.reshape(2,6)
resize(new_shape) 改变形状(可修改原数组) arr.resize(2,6)
flatten() 展平为一维(返回副本) arr.flatten()
ravel() 展平(返回视图,更快) arr.ravel()
np.concatenate((a,b), axis=0) 拼接数组 按行或列拼接
np.vstack((a,b)) 垂直堆叠 行数增加
np.hstack((a,b)) 水平堆叠 列数增加
np.split(arr, indices) 分割数组
 1a = np.arange(6).reshape(2, 3)
 2b = np.array([[7,8,9]])
 3print(np.vstack((a, b)))   # 垂直拼接
 4# [[0 1 2]
 5#  [3 4 5]
 6#  [7 8 9]]
 7
 8print(np.hstack((a, b.T))) # 水平拼接(注意维度匹配)
 9# [[0 1 2 7]
10#  [3 4 5 8]]

➕ 五、数学运算(逐元素)

运算 说明 示例
+ - * / 四则运算 arr + 2
** arr ** 2
np.sqrt(arr) 平方根
np.exp(arr) 指数
np.log(arr) 自然对数
np.sin(arr) / np.cos(arr) 三角函数
np.abs(arr) 绝对值
np.clip(arr, min, max) 截断
1arr = np.array([1, 4, 9])
2print(np.sqrt(arr))   # [1. 2. 3.]
3print(arr ** 2)       # [ 1 16 81]
4print(np.exp(arr))    # [ 2.718 54.598 8103.08]

📊 六、统计方法

方法 说明 示例
np.sum(arr, axis) 求和 np.sum(arr)arr.sum()
np.mean(arr, axis) 均值
np.median(arr) 中位数
np.std(arr, axis) 标准差
np.var(arr, axis) 方差
np.min(arr, axis) / np.max(arr, axis) 最值
np.argmin(arr, axis) / np.argmax(arr, axis) 最值索引
np.cumsum(arr, axis) 累积和
np.cumprod(arr, axis) 累积积
np.percentile(arr, q) 百分位数
1arr = np.array([[1,2],[3,4]])
2print(arr.sum())          # 10
3print(arr.mean(axis=0))   # [2. 3.]  列均值
4print(arr.std())          # 1.118...
5print(np.argmax(arr))     # 3(展平索引)

🔀 七、排序与搜索

方法 说明 示例
np.sort(arr, axis) 排序(返回新数组) np.sort(arr, axis=1)
arr.sort(axis) 原地排序
np.argsort(arr) 返回排序索引
np.where(condition, x, y) 条件选择
np.unique(arr) 去重并排序
np.in1d(arr, values) 检查成员
1arr = np.array([3,1,4,2])
2print(np.sort(arr))        # [1 2 3 4]
3print(np.argsort(arr))     # [1 3 0 2]  排序后的原索引
4
5print(np.where(arr > 2, arr, -1))  # [-1 -1  4  3]
6print(np.unique([1,2,2,3]))        # [1 2 3]

🧮 八、线性代数(np.linalg

方法 说明 示例
np.dot(a, b) / a @ b 矩阵乘法
np.linalg.inv(A) 矩阵求逆
np.linalg.det(A) 行列式
np.linalg.eig(A) 特征值和特征向量
np.linalg.solve(A, b) 解线性方程组
np.linalg.norm(x) 范数
1A = np.array([[1,2],[3,4]])
2B = np.array([[5,6],[7,8]])
3print(A @ B)   # [[19 22] [43 50]]
4print(np.linalg.det(A))   # -2.0

🎲 九、随机数(np.random

方法 分布
rand(d0, d1) 均匀 [0,1)
randn(d0, d1) 标准正态
randint(low, high, size) 均匀整数
normal(loc, scale, size) 正态(指定均值和标准差)
uniform(low, high, size) 均匀(指定范围)
choice(a, size, replace) 从 a 中抽样
shuffle(arr) 打乱
permutation(arr) 返回打乱后的新数组
seed(n) 设置随机种子
1np.random.seed(42)
2print(np.random.rand(3))        # [0.3745 0.9507 0.732]
3print(np.random.randint(0,10,size=(2,3)))   # 2x3 整数

💾 十、输入输出

方法 说明
np.save('file.npy', arr) 保存为二进制 .npy
np.load('file.npy') 加载 .npy
np.savetxt('file.csv', arr, delimiter=',') 保存为文本(CSV)
np.loadtxt('file.csv', delimiter=',') 加载文本

🔧 十一、常用工具

方法 说明 示例
np.tile(arr, reps) 平铺重复 np.tile([1,2], 3)[1,2,1,2,1,2]
np.repeat(arr, repeats) 重复元素 np.repeat([1,2], 2)[1,1,2,2]
np.roll(arr, shift) 循环移位
np.transpose(arr, axes) 转置(更灵活)
np.copy(arr) 深拷贝

📝 速查技巧

  • 广播机制:形状不同的数组运算时,会自动扩展维度(需满足规则)。
  • 视图 vs 副本reshaperavel、切片通常返回视图(修改会影响原数组),而 flattencopy 返回副本。
  • 轴(axis1axis=0 表示按行(垂直方向),axis=1 表示按列(水平方向),二维中。

  1. axis(发音:/ˈæksɪs/)的核心含义是“轴”或“中心线”。 ↩︎