线性代数:矩阵的介绍和运算
Contents
矩阵由多个长度相等的向量组成,其中的每列或者每行就是一个向量。因此把向量延伸一下就能得到矩阵(Matrix)。从数据结构的角度看,向量是一维数组,那矩阵就是一个二维数组。如果二维数组里绝大多数元素都是 0 或者不存在的值,那么我们就称这个矩阵很稀疏。
矩阵还有一种比较好理解的方式,就是用方程组来表达。比如方程组:
然后把每一个变量的系数写在对齐的一列中,可以写成矩阵:
也可以写成矩阵:
第 1 个矩阵称为方程组的系数矩阵,第 2 个矩阵称为方程组的增广矩阵。
矩阵用加粗的斜体大写字母表示,例如 X,而 X12,X22,…,Xnm 等等,表示矩阵中的每个元素,而这里面的 n 和 m 分别表示矩阵的行维数和列维数。
矩阵的运算
和向量一样,矩阵的和标量之间的加法和乘法,需要把标量和矩阵中的每个元素相加或相乘,就能得到结果。
矩阵和矩阵之间加法,只要保证两个矩阵具有相同的行维度和列维度,就可以把对应的元素两两相加。比如下面:
那么:
矩阵的乘法形式:
其中,矩阵 Z 为矩阵 X 和 Y 的乘积,X 是形状为 i x k 的矩阵,而 Y 是形状为 k × j 的矩阵。X 的列数 k 必须和 Y 的行数 k 相等,两者才可以进行这样的乘法。
还有一个比较常见的运算,是矩阵的转置。这个比较常见,写代码的时候我们有遇到,下面直接用 DataFrame 数据演示下:
1 | # 导入包 |
1 | # 拿到小费数据集 |
1 | tips.describe() |
1 | # DataFrame 数据格式的转置,和矩阵转置的性质一致。 |
矩阵的转置,也就是上面两个数据集的行列转换方式。