常用导入方式:import numpy as np。NumPy 的核心对象是 ndarray,多数操作都围绕数组的形状、索引和向量化计算展开。
创建与查看数组
| 写法 | 作用 |
np.array([1, 2, 3]) | 由列表创建数组 |
np.arange(0, 10, 2) | 按步长生成序列 |
np.linspace(0, 1, 5) | 在区间内等距生成指定数量的值 |
np.zeros((2, 3)) | 创建全 0 数组 |
np.ones((2, 3)) | 创建全 1 数组 |
np.full((2, 3), 7) | 创建指定常数填充的数组 |
np.eye(3) | 创建单位矩阵 |
a.shape | 查看数组形状 |
a.ndim | 查看维数 |
a.dtype | 查看元素数据类型 |
a.size | 查看元素总数 |
索引、筛选与形状变换
| 写法 | 作用 |
a[0] | 取第一个元素或第一行 |
a[:, 1] | 取二维数组第 2 列 |
a[1:4] | 切片,取索引 1 到 3 |
a[a > 0] | 布尔索引,筛选满足条件的元素 |
a.reshape(2, 3) | 改变形状,不改变元素总数 |
a.ravel() | 将数组展平为一维,尽可能返回视图 |
a.flatten() | 展平为一维,并返回副本 |
a.T | 转置数组 |
a[:, np.newaxis] | 增加一个维度 |
np.concatenate([a, b]) | 沿已有轴拼接数组 |
np.stack([a, b]) | 沿新轴堆叠数组 |
计算与统计
| 写法 | 作用 |
a + b | 逐元素加法,可结合广播机制 |
a * b | 逐元素乘法 |
a @ b | 矩阵乘法 |
np.sum(a) | 求和 |
np.mean(a) | 求均值 |
np.std(a) | 求标准差 |
np.min(a) / np.max(a) | 求最小值 / 最大值 |
np.sum(a, axis=0) | 沿指定轴计算,例如按列求和 |
np.where(a > 0, 1, 0) | 按条件选择或赋值 |
np.clip(a, 0, 100) | 将值限制在指定区间 |
np.unique(a) | 返回不重复值 |
np.sort(a) | 返回排序后的数组 |
随机数、缺失值与保存
| 写法 | 作用 |
rng = np.random.default_rng(42) | 创建推荐的随机数生成器,并设置随机种子 |
rng.random(5) | 生成 0 到 1 之间的随机数 |
rng.integers(0, 10, 5) | 生成随机整数 |
np.isnan(a) | 判断元素是否为 NaN |
np.nanmean(a) | 忽略 NaN 计算均值 |
b = a.copy() | 显式复制数组,避免共享底层数据 |
np.allclose(a, b) | 判断两个数组在数值误差范围内是否接近 |
np.linalg.norm(a) | 计算向量或矩阵范数 |
np.linalg.solve(A, b) | 求解线性方程组 Ax=b |
np.save('a.npy', a) | 保存单个 NumPy 数组 |
np.load('a.npy') | 读取 NumPy 数组文件 |
课堂提示:重点掌握 shape、索引与切片、axis、reshape、布尔索引和广播。遇到结果维度不符合预期时,先检查 a.shape。