Myluzh Blog

Python numpy 矩阵与向量

发布时间: 2023-7-20 文章作者: myluzh 分类名称: Python 朗读文章


0x01 矩阵与向量
(1)矩阵

矩阵(matrix)和array的区别矩阵必须是2维的,但是array可以是多维的。
如下图,这个是 3x2 矩阵,即3行2列。如m为行,n 为列,那么 mxn 即 3x2。
点击查看原图
矩阵的维数即行数x列数,矩阵元素(矩阵项):
点击查看原图
Aij 指第 i 行,第j列的元素.

(2)向量
向量是一种特殊的矩阵,讲义中的向量一般都是列向量,下图展示的就是三维列向量(3x1)
点击查看原图

0x02 加法和标量乘法
(1)矩阵的加法:
行列数相等的可以加。例:
点击查看原图

(2)矩阵的乘法:

每个元素都要乘。例:
点击查看原图
组合算法也类似

0x03 矩阵向量乘法
矩阵和向量的乘法如图: mxn 的矩阵乘以 nx1 的向量,得到的是 mx1 的向量。
例如:
点击查看原图
1*1+3*5 = 16
4*1+0*5 = 4
2*1+1*5 = 7
矩阵乘法遵循准则:
(M行, N列)*(N行,L列) = (M行,L列)

0x04 矩阵乘法
(1)介绍
mxn 矩阵乘以 nxo 矩阵,变成 mxo 矩阵
确保第一个矩阵的列数等于第二个矩阵的行数,否则无法相乘。
举例:比如说现在有两个矩阵 A 和 B,那 么它们的乘积就可以表示为图中所示的形式。
点击查看原图
(2)算一算
点击查看原图
求矩阵AB结果:
点击查看原图

0x05 矩阵乘法的性质
矩阵的乘法不满足交换律: AxB != BxA
矩阵的乘法满足结合律。即: Ax (BxC) = (AxB) xC
单位矩阵:在阵的乘法中,有一种矩阵起着特殊的作用,如同数的乘法中的 1,我们称 这种矩阵为单位矩阵,它是个方阵,一般用1或者巨表示,从 左上角到右下角的对角线(称为主对角线) 上的元素均为 1 以外全都为 0。如:
点击查看原图

0x06 逆、转置
矩阵的逆: 如矩阵 A 是一个 mxm 矩阵 (方阵) ,如果有逆矩阵,则:
点击查看原图
低阶矩阵求逆的方法:
1.待定系数法
2.初等变换
矩阵的转置: 设A为 mxn 阶矩阵 (即 m 行 n 列),第i行j列的元素是 a(i,j),即:
A=a(i,j)
定义A的转置为这样一个 nxm 阶矩阵 B,满足 B=(j,i),即 b(i,j)=a(j,i) (B的第i行第j列元素是 A 的第j行第i列元素),记 AT=B。
直观来看,将 A 的所有元素绕着一条从第 1 行第 1列元素出发的右下方 45 度的射线作镜面反转,即得到A的转置。
点击查看原图

0x07 矩阵运算的例子
7.png

0x08 矩阵乘法API(np.matmul np.dot)
import numpy as np

a = np.array([[80, 86], 
              [82, 80], 
              [85, 78], 
              [90, 90], 
              [86, 82], 
              [82, 90], 
              [78, 80], 
              [92, 94], ])
b = np.array([[0.7],
              [0.3]])

# 使用np.matmul()
"""
np.matmul(a,b)
Out[5]: 
array([[81.8],
       [81.4],
       [82.9],
       [90. ],
       [84.8],
       [84.4],
       [78.6],
       [92.6]])
"""

# 使用np.dot()
"""
Out[6]: 
array([[81.8],
       [81.4],
       [82.9],
       [90. ],
       [84.8],
       [84.4],
       [78.6],
       [92.6]])
"""
二者都是矩阵乘法,在矢量乘矢量的内积运算中,np.matmul与np.dot没有区别。但是np.matmul中禁止矩阵与标量的乘法。

标签: python numpy 矩阵 向量 np.matmul np.dot

发表评论