矩阵、形状、索引与数据表
层级:A|必学
1. 什么是矩阵
矩阵是按行和列排列的矩形数表:
A=a11a21⋮am1a12a22⋮am2⋯⋯⋱⋯a1na2n⋮amn∈Rm×n.
m 是行数,n 是列数,形状写成“行 × 列”。aij 表示第 i 行第 j 列的标量。矩阵不是一堆数字的随意容器;它同时可以表示数据表、线性变换、二次型系数或变量之间的关系。
2. 数据矩阵
最常见约定是每行一个样本、每列一个特征:
X=x1Tx2T⋮xnT∈Rn×d.
其中:
- n:样本数;
- d:特征数;
- xij:第 i 个样本的第 j 个特征;
- 第 i 行 xiT:一个样本;
- 第 j 列:某一特征在所有样本上的取值。
也有教材使用“每列一个样本”的约定。没有绝对优劣,必须通过形状与后续乘法确认。
3. 用批量线性预测理解形状
若 X∈Rn×d、w∈Rd、b∈R,所有样本的预测写成
y^=Xw+b1.
形状为
(n×d)(d×1)+(n×1)=n×1.
输出每个样本一个预测值。程序库常用广播把标量 b 自动加到每个元素,数学表达用 b1 明确说明复制过程。
4. 行、列与切片
常见记号并不完全统一:
- Ai: 或 Ai,⋅:第 i 行;
- A:j 或 A⋅,j:第 j 列;
- AI,J:由行索引集合 I 和列索引集合 J 选出的子矩阵。
数学索引通常从 1 开始,Python/NumPy 从 0 开始。把公式实现为代码时要特别处理这一差异。
5. 特殊矩阵
方阵
行列数相同的 n×n 矩阵。只有方阵通常讨论行列式、特征值和普通逆矩阵。
零矩阵
所有元素为 0,形状依上下文记为 0m×n。
单位矩阵
In=10⋮001⋮0⋯⋯⋱⋯00⋮1.
它对矩阵乘法的作用类似数字 1:IA=A。
对角矩阵
非对角元素全为 0,记作 diag(d1,…,dn)。它与向量相乘相当于逐坐标缩放。
三角矩阵
上三角矩阵的主对角线下方全为 0,下三角矩阵相反。LU 与 Cholesky 分解利用三角结构快速求解方程。
对称矩阵
AT=A。协方差矩阵、Gram 矩阵和 Hessian 在适当条件下都是对称矩阵。
6. 矩阵可以表示线性变换
y=Ax,A∈Rm×n,x∈Rn,y∈Rm.
A 接收 n 维输入,输出 m 维向量。矩阵的第 j 列是标准基向量 ej 被变换后的结果;输出也是这些列按输入分量加权的线性组合:
Ax=x1a1+⋯+xnan.
这个观点比把矩阵只看成数据表更重要。
7. 矩阵也可以表示关系或统计量
- 邻接矩阵 Aij 表示图中节点 i,j 是否相连;
- 距离矩阵 Dij 表示样本 i,j 的距离;
- 协方差矩阵 Σij 表示第 i,j 个随机变量共同变化的程度;
- 混淆矩阵的行列对应真实类别与预测类别;
- 核矩阵 Kij=k(xi,xj) 保存两两相似度。
同样是二维数表,不同语义决定它能做什么运算。
8. 张量只需先理解为更高阶数组
标量可视为 0 阶对象,向量是一阶,矩阵是二阶,更高维数组常统称张量。例如图像批次可能形状为
(batch,height,width,channels).
严格数学中的张量比数组定义更深,但阅读基础机器学习时先掌握轴、形状与沿轴运算即可。
9. 形状检查的工程习惯
对每一步写:
- 输入形状;
- 操作在哪个轴进行;
- 输出形状;
- 是否发生广播或降维。
例如对 X∈Rn×d 按列求均值,输出是 d 维特征均值;按行求均值,输出是 n 个样本内部均值。axis 选错通常不会报错,却会产生语义错误。
10. 易错点
- m×n 始终先写行数,再写列数。
- 数学从 1 索引,代码常从 0 索引。
- 数据矩阵的样本方向不是全球统一约定。
- 一维数组的形状可能在广播时产生意外。
- 方阵不一定可逆,对称矩阵也不一定正定。
常见问答
Q1:DataFrame 就是矩阵吗?
不完全是。DataFrame 可包含字符串、缺失值和不同数据类型,并带标签语义。转为数值矩阵前需要编码和缺失处理。
Q2:为什么深度学习中常把 batch 放在第一维?
这是实现约定,方便批处理。卷积通道放在哪一轴也有不同约定,必须查框架接口。
Q3:向量是特殊矩阵吗?
计算中可把列向量看作 d×1 矩阵,但教材通常区分向量与矩阵,以突出不同几何角色。
练习
- 一个数据集有 1000 个样本、20 个特征,按“每行一个样本”时 X 的形状是什么?
- x7,3 表示什么?对应 Python 索引通常是什么?
- Xw 的形状是什么?
- 写出 3×3 单位矩阵与对角矩阵 diag(2,−1,4)。
- 若按列计算 X 的均值,输出包含多少个数?
- 解释为什么协方差矩阵一定是方阵。
答案与提示
- 1000×20。
- 第 7 个样本的第 3 个特征;通常为
X[6, 2]。
- 1000×1。
- 单位矩阵主对角为 1;第二个矩阵主对角依次为 2,−1,4。
- 20 个。
- 它对同一组 d 个变量做两两协方差,形状为 d×d。