机器学习(常用科学计算库的使用)基础定位、目标

4.6 数学:矩阵

学习目标

  • 目标
    • 知道什么是矩阵和向量
    • 知道矩阵的加法,乘法
    • 知道矩阵的逆和转置
    • 应用np.matmul、np.dot实现矩阵运算

1 矩阵和向量

1.1 矩阵

矩阵,英文matrix,和array的区别矩阵必须是2维的,但是array可以是多维的。
如图:这个是 3×2 矩阵,即 3 行 2 列,如 m 为行,n 为列,那么 m×n 即 3×2[123456]\left[ \begin{matrix} 1 & 2 \ 3 & 4 \ 5 & 6 \end{matrix} \right]⎣⎡135246⎦⎤矩阵的维数即行数×列数
矩阵元素(矩阵项):A=[123456]A = \left[ \begin{matrix} 1 & 2 \ 3 & 4 \ 5 & 6 \end{matrix} \right]A=⎣⎡135246⎦⎤Aij 指第 i 行,第 j 列的元素。

1.2 向量

向量是一种特殊的矩阵,讲义中的向量一般都是列向量,下面展示的就是三维列 向量(3×1)。)A=[123]A = \left[ \begin{matrix} 1 \ 2 \ 3 \end{matrix} \right]A=⎣⎡123⎦⎤

2 加法和标量乘法

矩阵的加法:行列数相等的可以加。
例:[123456]+[123456]=[24681012]\left[ \begin{matrix} 1 & 2 \ 3 & 4 \ 5 & 6 \end{matrix} \right] + \left[ \begin{matrix} 1 & 2 \ 3 & 4 \ 5 & 6 \end{matrix} \right] = \left[ \begin{matrix} 2 & 4 \ 6 & 8 \ 10 & 12 \end{matrix} \right]⎣⎡135246⎦⎤+⎣⎡135246⎦⎤=⎣⎡26104812⎦⎤矩阵的乘法:每个元素都要乘。
例:3∗[123456]=[369121518]3 * \left[ \begin{matrix} 1 & 2 \ 3 & 4 \ 5 & 6 \end{matrix} \right] = \left[ \begin{matrix} 3 & 6 \ 9 & 12 \ 15 & 18 \end{matrix} \right]3∗⎣⎡135246⎦⎤=⎣⎡391561218⎦⎤组合算法也类似。

3 矩阵向量乘法

矩阵和向量的乘法如图:m×n 的矩阵乘以 n×1 的向量,得到的是 m×1 的向量
例:[134021]∗[15]=[1647]\left[ \begin{matrix} 1 & 3 \ 4 & 0 \ 2 & 1 \end{matrix} \right] * \left[ \begin{matrix} 1 \ 5 \end{matrix} \right] = \left[ \begin{matrix} 16 \ 4 \ 7 \end{matrix} \right]⎣⎡142301⎦⎤∗[15]=⎣⎡1647⎦⎤

  1. 1*1+3*5 = 16
  2. 4*1+0*5 = 4
  3. 2*1+1*5 = 7

矩阵乘法遵循准则:
(M行, N列)*(N行, L列) = (M行, L列)

4 矩阵乘法

矩阵乘法:
m×n 矩阵乘以 n×o 矩阵,变成 m×o 矩阵。
举例:比如说现在有两个矩阵 A 和 B,那 么它们的乘积就可以表示为图中所示的形式。
矩阵乘法计算过程.png

  • 练一练
  • A=[123456780]B=[121112211]A= \left[ \begin{matrix} 1 & 2 & 3 \ 4 & 5 & 6 \ 7 & 8 & 0 \end{matrix} \right] B= \left[ \begin{matrix} 1 & 2 & 1 \ 1 & 1 & 2 \ 2 & 1 & 1 \end{matrix} \right] A=⎣⎡147258360⎦⎤B=⎣⎡112211121⎦⎤
    求矩阵AB的结果

    答案: B=[1∗1+2∗1+3∗21∗2+2∗1+3∗11∗1+2∗2+3∗14∗1+5∗1+6∗24∗2+5∗1+6∗14∗1+5∗2+6∗17∗1+8∗1+0∗27∗2+8∗1+0∗17∗1+8∗2+0∗1]=[978211920152223] B= \left[ \begin{matrix} 11+21+32 & 12+21+31 & 11+22+31 \ 41+51+62 & 42+51+61 & 41+52+61 \ 71+81+02 & 72+81+01 & 71+82+0*1 \end{matrix} \right] =\left[ \begin{matrix} 9 & 7 & 8 \ 21 & 19 & 20 \ 15 & 22 & 23 \end{matrix} \right] B=⎣⎡1∗1+2∗1+3∗24∗1+5∗1+6∗27∗1+8∗1+0∗21∗2+2∗1+3∗14∗2+5∗1+6∗17∗2+8∗1+0∗11∗1+2∗2+3∗14∗1+5∗2+6∗17∗1+8∗2+0∗1⎦⎤=⎣⎡921157192282023⎦⎤

    5 矩阵乘法的性质

    矩阵的乘法不满足交换律:A×B≠B×A
    矩阵的乘法满足结合律。即:A×(B×C)=(A×B)×C
    单位矩阵:在矩阵的乘法中,有一种矩阵起着特殊的作用,如同数的乘法中的 1,我们称 这种矩阵为单位矩阵.它是个方阵,一般用 I 或者 E 表示,从 左上角到右下角的对角线(称为主对角线)上的元素均为 1 以外全都为 0。如:
    单位矩阵.png

    6 逆、转置

    矩阵的逆:如矩阵 A 是一个 m×m 矩阵(方阵),如果有逆矩阵,则:
    AA = AA = I
    低阶矩阵求逆的方法:
    1.待定系数法
    2.初等变换
    矩阵的转置:设 A 为 m×n 阶矩阵(即 m 行 n 列),第 i 行 j 列的元素是 a(i,j),即:
    A=a(i,j)
    定义 A 的转置为这样一个 n×m 阶矩阵 B,满足 B=a(j,i),即 b (i,j)=a (j,i)(B 的第 i 行第 j 列元素是 A 的第 j 行第 i 列元素),记 A =B。
    直观来看,将 A 的所有元素绕着一条从第 1 行第 1 列元素出发的右下方 45 度的射线作 镜面反转,即得到 A 的转置。
    例:[abcdef]T=[acebdf]\left[ \begin{matrix} a & b \ c & d \ e & f \end{matrix} \right]^T = \left[ \begin{matrix} a & c & e \ b & d & f \end{matrix} \right]⎣⎡acebdf⎦⎤T=[abcdef]

    7 矩阵运算

    学生成绩计算.png
    [80868280857890908682829078809294]∗[0.70.3]=[84.280.680.19083.287.679.493.4]\left[ \begin{matrix} 80 & 86 \ 82 & 80 \ 85 & 78 \ 90 & 90 \ 86 & 82 \ 82 & 90 \ 78 & 80 \ 92 & 94 \end{matrix} \right]* \left[ \begin{matrix} 0.7 \ 0.3 \end{matrix} \right]= \left[ \begin{matrix} 84.2 \ 80.6 \ 80.1 \ 90 \ 83.2 \ 87.6 \ 79.4 \ 93.4 \end{matrix} \right]⎣⎢⎢⎢⎢⎢⎢⎢⎢⎢⎢⎡80828590868278928680789082908094⎦⎥⎥⎥⎥⎥⎥⎥⎥⎥⎥⎤∗[0.70.3]=⎣⎢⎢⎢⎢⎢⎢⎢⎢⎢⎢⎡84.280.680.19083.287.679.493.4⎦⎥⎥⎥⎥⎥⎥⎥⎥⎥⎥⎤

    7.1 矩阵乘法api:

  • np.matmul

  • np.dot

    1. >>> a = np.array([[80, 86],
    2. [82, 80],
    3. [85, 78],
    4. [90, 90],
    5. [86, 82],
    6. [82, 90],
    7. [78, 80],
    8. [92, 94]])
    9. >>> b = np.array([[0.7], [0.3]])
    10. >>> np.matmul(a, b)
    11. array([[81.8],
    12. [81.4],
    13. [82.9],
    14. [90. ],
    15. [84.8],
    16. [84.4],
    17. [78.6],
    18. [92.6]])
    19. >>> np.dot(a,b)
    20. array([[81.8],
    21. [81.4],
    22. [82.9],
    23. [90. ],
    24. [84.8],
    25. [84.4],
    26. [78.6],
    27. [92.6]])

    np.matmul和np.dot的区别:
    二者都是矩阵乘法。 np.matmul中禁止矩阵与标量的乘法。 在矢量乘矢量的內积运算中,np.matmul与np.dot没有区别。

    7 小结

  • 1.矩阵和向量【知道】

    • 矩阵就是特殊的二维数组
    • 向量就是一行或者一列的数据
  • 2.矩阵加法和标量乘法【知道】
    • 矩阵的加法:行列数相等的可以加。
    • 矩阵的乘法:每个元素都要乘。
  • 3.矩阵和矩阵(向量)相乘 【知道】
    • (M行, N列)*(N行, L列) = (M行, L列)
  • 4.矩阵性质【知道】
    • 矩阵不满足交换率,满足结合律
  • 5.单位矩阵【知道】
    • 对角线都是1的矩阵,其他位置都为0
  • 6.矩阵运算【掌握】
    • np.matmul
    • np.dot
    • 注意:二者都是矩阵乘法。 np.matmul中禁止矩阵与标量的乘法。 在矢量乘矢量的內积运算中,np.matmul与np.dot没有区别。