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列元素),记 A
T=B。
直观来看,将 A 的所有元素绕着一条从第 1 行第 1列元素出发的右下方 45 度的射线作镜面反转,即得到A的转置。
0x07 矩阵运算的例子
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中禁止矩阵与标量的乘法。
发表评论