【python讲线代】S03E03 矩阵运算的python描述及矩阵乘法的本质剖析

0.本集概览

1.python描述的矩阵加法与数量乘法
2.python描述的矩阵与向量、矩阵与矩阵的乘法
3.矩阵与向量乘法的本质在于对向量基底的转换

上一集我们讲完了向量的基本运算之后,这一集我们开始讨论一下矩阵的相关内容。

1.python描述的矩阵运算

1.1.矩阵的加法

矩阵之间的加法运用到相等规模的两个矩阵之间才意义,即行数和列数相等的两个矩阵之间才能做加法运算,这个非常容易理解,将对应位置上的元素相加即可得到结果矩阵。

$\begin{bmatrix} a_{11} & a_{12} & a_{13} \\ a_{21} & a_{22} & a_{23} \end{bmatrix} + \begin{bmatrix} b_{11} & b_{12} & b_{13} \\ b_{21} & b_{22} & b_{23} \end{bmatrix}=\begin{bmatrix} a_{11}+b_{11} & a_{12}+b_{12} & a_{13}+b_{13} \\ a_{21}+b_{21} & a_{22} +b_{22}& a_{23} +b_{23} \end{bmatrix} $

看一个例子,无需多言:
代码片段:

import numpy as np
x = np.array([[1, 2, 3],
              [4, 5, 6]])
y = np.array([[10, 20, 30],
              [40, 50, 60]])
print(x+y)

代码片段:

[[11 22 33]
 [44 55 66]]

1.2.矩阵的数量乘法

矩阵的数量乘法,也非常简单:

$c\begin{bmatrix} a_{11} & a_{12} & a_{13} \\ a_{21} & a_{22} & a_{23} \end{bmatrix} =\begin{bmatrix} ca_{11} & ca_{12} & ca_{13} \\ ca_{21} & ca_{22} & ca_{23} \end{bmatrix}$

同样,我们看一个代码的例子:
代码片段:

import numpy as np
x = np.array([[1, 2, 3],
              [4, 5, 6]])
print(2*x)

运行结果:

[[ 2  4  6]
 [ 8 10 12]]

1.3.矩阵与向量的乘法

矩阵与向量的乘法,一般而言,矩阵在左,列向量在右,这种 $Ax$ 的写法描述了向量的位置在矩阵的作用下进行变换的过程(下面会详细介绍):

$\begin{bmatrix} a_{11} & a_{12} \\ a_{21} & a_{22} \\ a_{31} & a_{32} \end{bmatrix} \begin{bmatrix} b_{11} \\ b_{21} \end{bmatrix} =\begin{bmatrix} a_{11}b_{11} +a_{12}b_{21} \\ a_{21}b_{11} + a_{22} b_{21}\\ a_{31}b_{11} + a_{32} b_{21} \end{bmatrix} $

这里举的是一个实际的例子,从这个例子中我们可以概括出一般性的矩阵与向量的乘法规则:

1、矩阵在左,列向量在右,矩阵的列数和列向量的维数必须相等
2、矩阵和向量相乘的结果也是一个向量
3、矩阵的行数就是输出的列向量的维数
4、乘法的规则如上所示,就是矩阵的每行和列向量进行对应元素分别相乘后相加

我们来看一个矩阵与列向量相乘的例子:

$\begin{bmatrix} 1 & 2 \\ 3 &4 \\ 5 &6 \end{bmatrix} \begin{bmatrix} 4 \\ 5 \end{bmatrix} =\begin{bmatrix} 1×4 +2×5 \\ 3×4 + 4× 5\\ 5×4 +6×5 \end{bmatrix}$

代码片段:

import numpy as np
x = np.array([[1, 2],
              [3, 4],
              [5, 6]])
y = np.array([[4, 5]]).T

print(np.dot(x, y))

运行结果:

[[14]
 [32]
 [50]]

1.4.矩阵与矩阵的乘法

top Created with Sketch.