
2.2 行向量、列向量
上一章提到,向量要么一行多列,要么一列多行,因此向量可以看作是特殊的矩阵——一维矩阵(one-dimensional matrix)。一行多列的向量叫行向量(row vector),一列多行的向量叫列向量(column vector)。
一个矩阵可以视作是由若干行向量或列向量整齐排列而成的。如图2.6所示,数据矩阵X的每一行是一个行向量,代表一个样本点;X的每一列为一个列向量,代表某个特征上的所有样本数据。

图2.6 观察数据矩阵的两个视角
行向量:一行多列,一个样本数据点
行向量将n个元素排成一行,形状为1×n(代表1行、n列)。下式行向量a为1行4列,即

如图2.7所示,行向量转置(transpose)便可以得到列向量,反之亦然。转置运算符号为正体上标T。

图2.7 行向量的转置是列向量
表2.1所示为利用Numpy构造行向量的几种常见方法。可以用len(a)计算向量元素个数。
表2.1 用Numpy构造行向量

前文提过, X的行向量序号采用“上标加括号”方式,如x(1)代表X的第一行行向量。
如图2.8所示,矩阵X可以写成一组行向量上下叠放,即


图2.8 矩阵由一系列行向量构造
再次强调:数据分析偏爱用行向量表达样本点。
列向量:一列多行,一个特征样本数据
列向量将n个元素排成一列,形状为n×1(即n行、1列)。举个例子,下式中列向量b为4行1列,即

构造X的列向量序号则采用下标表示,如x1。如图2.9所示,矩阵X可以看做是4个等行数列向量整齐排列得到的,即

注意:不加说明时,本书中向量一般指的是列向量。
注意:此处特征向量不同于特征值分解(eigen decomposition)中的特征向量(eigenvector)。
数据分析时通常偏爱用列向量表达特征,如xj代表第j个特征上的样本数据构成的列向量。因此,列向量又常称做特征向量(feature vector)。xj对应概率统计的随机变量Xj,或者代数中的变量xj。

图2.9 矩阵由一排列向量构造
表2.2总结了Numpy构造列向量的几种常见方法。
表2.2 用Numpy构造列向量

特殊列向量
全零列向量(zero column vector)0,是指每个元素均为0的列向量,即

代码numpy.zeros((4,1))可以生成4×1全零列向量。多维空间中,原点也常记做零向量0。
全1列向量(all-ones column vector)1,是指每个元素均为1的列向量,即

代码numpy.ones((4,1))可以生成4×1全1列向量。
全1列向量1在矩阵乘法中有特殊的地位,本书第5章、第22章将分别从矩阵乘法和统计两个角度进行讲解。