机器学习必备 NumPy 操作
掌握形状、切片、按列统计、布尔筛选和广播,才能可靠检查模型输入。
学习前需要掌握
背景与问题
机器学习的数据流通常从数组筛选、统计与形状转换开始。一个轴弄错,可能让后续模型正常运行却使用了错误样本或错误统计量,因此这些操作需要像模型接口一样被检查。
本页关注操作的语义,而不是罗列所有 NumPy 函数名称。每一步都应能说明输入轴、输出形状和记录是否仍对齐。
概念定义
NumPy 数组将数值放进具有 dtype 和 shape 的规则结构。索引选择元素或子数组,axis 指定聚合方向,广播按维度尺寸规则扩展运算。
广播不会读取“这是一条样本”之类业务含义。两份数组尺寸可兼容,只能说明操作被定义,不能证明它符合我们想计算的东西。
直观理解
把数组的行当记录、列当字段,再在每次操作前问:我是选记录、选字段,还是对哪个轴求统计?这个问题通常能比直接观察一长串数字更快定位错误。
一次逐列统计与一次按行筛选
构造 X=[[1,10],[2,20],[3,30]]。axis=0 的均值为 [2,20],减去它会分别中心化两列;若筛选第一列不超过 2,得到的应是前两行,而不是前两列。
另一个容易遗漏的情况是形状 (3,) 的预测与 (3,1) 的标签相减,会广播成 (3,3)。数值看起来像差值,但已经不是三条样本一一对应的误差;应在计算损失前显式对齐形状。
核心原理
逐特征均值通常使用 axis=0,得到长度 d 的结果,再从每一行减去同一组均值。逐样本求均值使用 axis=1,意义不同;keepdims 可在需要时保留维度,帮助明确广播。
布尔 mask 的长度应与被筛选的轴一致,并同步用于标签、时间与样本标识。高级索引、切片与复制的行为还应确认,防止修改视图时意外改动原数组。
reshape 只能按指定方式重新分组现有元素,不会替你按业务字段重新排列。若列顺序错误或标签错位,强制 reshape 不能恢复语义。
运算后应检查 shape、dtype、有限值与少量人工样例。整数溢出、对象数组和 NaN 传播都可能影响结果;不能仅根据“没有报错”判断数据正确。
数学表达
核心表达
shape 是接口契约;布尔 mask 必须与被筛选轴长度一致;广播前要确认结果形状。
变量含义
变量定义与本页概念定义一致,代码中的同名变量保持相同语义。
计算步骤
- 1查看 shape/dtype
- 2使用行列切片
- 3按正确 axis 统计
- 4构造布尔 mask
代码对应位置
示例 1机器学习必备 NumPy 操作:最小可验证示例:把正文原理映射为可检查的代码行为。
计算与实现步骤
- 查看 shape/dtype
- 使用行列切片
- 按正确 axis 统计
- 构造布尔 mask
- 检查广播结果
代码实现
示例 1
机器学习必备 NumPy 操作:最小可验证示例
example_01.py用途:把正文原理映射为可检查的代码行为。
import numpy as np
X=np.array([[1.,10.],[2.,20.],[3.,30.]])
print(X.shape, X[0], X[:,0])
print(X.mean(0), X.std(0))
print(X[X[:,0] <= 2])代码解析
解析始终位于完整代码下方,并按实际代码段逐项对应。
输入数据与任务
把正文原理映射为可检查的代码行为。
X- 完整特征矩阵,每行一个样本、每列一个特征。
mean- 训练特征逐列均值。
std- 训练特征逐列标准差。
Step 1 · 1–5 行
导入当前步骤需要的数值计算、预处理、模型或评价工具。依赖集中写在代码开头,便于复现。
import numpy as np
X=np.array([[1.,10.],[2.,20.],[3.,30.]])
print(X.shape, X[0], X[:,0])
print(X.mean(0), X.std(0))
print(X[X[:,0] <= 2])代码与数学原理
减去训练均值并除以训练标准差,对应代码中的 mean/std 或 StandardScaler。
预期输出或运行结果
输出形状、第一行、第一列、逐列均值/标准差和前两行。 (3, 2) [ 1. 10.] [1. 2. 3.] [ 2. 20.] [0.81649658 8.16496581] [[ 1. 10.] [ 2. 20.]]
常见错误 · 5 条
- 不要在测试集上调用 fit 或 fit_transform;测试集只能复用训练参数。
- axis 理解反
- mask 长度错
- 无意改变维度
- 确认样本轴、特征轴以及 X 与 y 的第一维完全对应。
实际应用
- 数据审计
- 手写算法
常见错误
- axis 理解反
- mask 长度错
- 无意改变维度
推荐学习资料
参考库不会生成虚假资源或无效外部链接。