矩阵的运算

linear algebra
linear algebra
matrix
python
Author
Published

Monday, April 27, 2020

矩阵的加法运算

矩阵之间的加法运算必须运用在两个相等规模的矩阵之间,即行数和列数都相等的两个矩阵才能做加法运算,原因非常容易理解:因为需要将参与加法运算的两个矩阵对应位置上的元素分别进行相加,才能得到最终的结果矩阵。

import numpy as np
A = np.array([[1, 2],
              [3, 4],
              [5, 6]])
B = np.array([[10, 20],
              [30, 40],
              [50, 60]])
print(A+B)
[[11 22]
 [33 44]
 [55 66]]

矩阵的数量乘法运算

将参与运算的标量数字分别与矩阵的每一个元素相乘,得到结果矩阵对应的新元素,显然,得到的结果矩阵的大小规模是不变的。

A = np.array([[1, 4],
              [2, 5],
              [3, 6]])
print(2*A)
[[ 2  8]
 [ 4 10]
 [ 6 12]]

矩阵与矩阵的乘法

不是随意两个矩阵都可以相乘,乘法运算对两个矩阵的形态是有特定要求的,主要有以下3条:

  1. 左边矩阵的列数和右边矩阵的行数必须相等

  2. 左边矩阵的行数决定最终结果矩阵的行数

  3. 右边矩阵的列数决定最终结果矩阵的列数

A = np.array([[1, 2],
              [3, 4],
              [5, 6],
              [7, 8]])
B = np.array([[2, 3, 4, 5],
              [6, 7, 8, 9]])
print(np.dot(A, B))
[[ 14  17  20  23]
 [ 30  37  44  51]
 [ 46  57  68  79]
 [ 62  77  92 107]]

矩阵乘以向量

矩阵与向量的乘法,一般是将矩阵A写在左边,列向量x写在右边,这种 Ax 形式的写法便于描述向量x的空间位置在矩阵A的作用下进行变换的过程。

正如前面文章所讲,矩阵与向量的乘法可以看作是矩阵与矩阵乘法的一种特殊形式,只不过位于后面的是一个列数为1的特殊矩阵而已。

对应前面矩阵与矩阵的乘法规则,矩阵与向量的乘法规则主要有:

  1. 矩阵在左,列向量在右,矩阵的列数和列向量的维数必须相等

  2. 矩阵和列向量相乘的结果也是一个列向量

  3. 矩阵的行数就是结果向量的维数

  4. 乘法运算的实施过程就是矩阵的每行和列向量的对应元素分别相乘之后再进行相加

A = np.array([[1, 2],
              [3, 4],
              [5, 6]])
x = np.array([[4, 5]]).T
print(np.dot(A, x))
[[14]
 [32]
 [50]]

从结果来看,原始向量表示二维平面上的一个点,其平面坐标为(4,5),经过矩阵A的乘法作用,最终将原始点转化为三维空间中的一个新的目标点,其空间坐标为(14,32,50)。

从这个例子中,我们可以总结出矩阵所发挥的重要作用:在指定矩阵的乘法作用下,原始空间中的向量被映射转换到了目标空间中的新坐标,向量的空间位置由此发生了变化,甚至在映射后,目标空间的维数相较于原始空间都有可能发生改变。

具体这些空间位置的改变的规律,以及其背后更深层次的内涵,我们会在后面的文章中一起讨论学习。