矩阵系列知识摘记

矩阵基本运算

1、单位矩阵

单位矩阵是一个特殊的方阵,其主对角线上的元素全为1,而其他元素全为0。单位矩阵通常用符号 I 或 E 表示。
单位矩阵在矩阵运算中类似于数字1 在乘法中的作用,即任何矩阵与单位矩阵相乘,都等于原矩阵。
I n = [ 1 0 0 . . . 0 0 1 0 . . . 0 0 0 1 . . . 0 . . . . . . . . . . . . 0 0 0 0 . . . 1 ] I_{n} = \left[ \begin{matrix} {1} & {0} & {0} & ... & {0}\\ {0} & {1} & {0} & ... & {0}\\ {0} & {0} & {1} & ... & {0}\\ ... & ... &... & ... & 0 \\ {0} & {0} & {0} & ... & {1} \end{matrix} \right] In= 100...0010...0001...0...............00001
在这里插入图片描述
方阵:当矩阵的行数和列数目相等时,可以称之为方阵。方阵是一种特殊的矩阵。

2、矩阵的加法和减法

两个同型(行数和列数相同)的矩阵可以进行加法和减法运算,其结果是一个同型矩阵,它的每个元素的值等于前面两个矩阵对应位置的元素的和或者差。

加法公式
[ a 11 a 12 . . . a 1 n a 21 a 22 . . . a 2 n . . . a m 1 a b m 2 . . . a m n ] + [ b 11 b 12 . . . b 1 n b 21 b 22 . . . b 2 n . . . b m 1 b m 2 . . . b m n ] = [ a 11 + b 11 a 12 + b 12 . . . a 1 n + b 1 n a 21 + b 21 a 22 + b 22 . . . a 2 n + b 2 n . . . a m 1 + b m 1 a m 2 + b m 2 . . . a m n + b m n ] \left[ \begin{matrix} a_{11} & a_{12} & ... & a_{1n}\\ a_{21} & a_{22} & ... & a_{2n}\\ ...\\ a_{m1} &ab_{m2} & ... & a_{mn} \end{matrix} \right] + \left[ \begin{matrix} b_{11} & b_{12} & ... & b_{1n}\\ b_{21} & b_{22} & ... & b_{2n}\\ ...\\ b_{m1} & b_{m2} & ... & b_{mn} \end{matrix} \right] = \left[ \begin{matrix} a_{11}+b_{11} & a_{12}+b_{12} & ... & a_{1n}+b_{1n}\\ a_{21}+ b_{21} & a_{22}+b_{22} & ... & a_{2n}+b_{2n}\\ ...\\ a_{m1}+b_{m1} & a_{m2}+b_{m2} & ... & a_{mn}+b_{mn} \end{matrix} \right] a11a21...am1a12a22abm2.........a1na2namn + b11b21...bm1b12b22bm2.........b1nb2nbmn = a11+b11a21+b21...am1+bm1a12+b12a22+b22am2+bm2.........a1n+b1na2n+b2namn+bmn

减法公式
[ a 11 a 12 . . . a 1 n a 21 a 22 . . . a 2 n . . . a m 1 a m 2 . . . a m n ] − [ b 11 b 12 . . . b 1 n b 21 b 22 . . . b 2 n . . . b m 1 b m 2 . . . b m n ] = [ a 11 − b 11 a 12 − b 12 . . . a 1 n − b 1 n a 21 − b 21 a 22 − b 22 . . . a 2 n − b 2 n . . . a m 1 − b m 1 a m 2 − b m 2 . . . a m n − b m n ] \left[ \begin{matrix} a_{11} & a_{12} & ... & a_{1n}\\ a_{21} & a_{22} & ... & a_{2n}\\ ...\\ a_{m1} &a_{m2} & ... & a_{mn} \end{matrix} \right] - \left[ \begin{matrix} b_{11} & b_{12} & ... & b_{1n}\\ b_{21} & b_{22} & ... & b_{2n}\\ ...\\ b_{m1} & b_{m2} & ... & b_{mn} \end{matrix} \right] = \left[ \begin{matrix} a_{11}-b_{11} & a_{12}-b_{12} & ... & a_{1n}-b_{1n}\\ a_{21}- b_{21} & a_{22}-b_{22} & ... & a_{2n}-b_{2n}\\ ...\\ a_{m1}-b_{m1} & a_{m2}-b_{m2} & ... & a_{mn}-b_{mn} \end{matrix} \right] a11a21...am1a12a22am2.........a1na2namn b11b21...bm1b12b22bm2.........b1nb2nbmn = a11b11a21b21...am1bm1a12b12a22b22am2bm2.........a1nb1na2nb2namnbmn

在numpy中的计算如下:

a = np.array([[1, 2], [3, 4]])  
print(a) 输出如下
[[1 2]
 [3 4]]
 
 b = np.eye(2, 2, dtype=np.int16)  
print(b) 输出如下
[[1 0]
 [0 1]]
 
print(a + b)  
[[2 2]
 [3 5]]
 
print(a-b)
[[0 2]
 [3 3]]

3、矩阵的数乘

与向量类似,一个数(标量)也可以跟一个矩阵相乘,其结果是一个矩阵,其中各个元素的值等于该数乘以原来矩阵中对应位置的值。

k ∗ [ a 11 a 12 . . . a 1 n a 21 a 22 . . . a 2 n . . . a m 1 a m 2 . . . a m n ] = [ k ∗ a 11 k ∗ a 12 . . . k ∗ a 1 n k ∗ a 21 k ∗ a 22 . . . k ∗ a 2 n . . . k ∗ a m 1 k ∗ a m 2 . . . k ∗ a m n ] k * \left[ \begin{matrix} a_{11} & a_{12} & ... & a_{1n}\\ a_{21} & a_{22} & ... & a_{2n}\\ ...\\ a_{m1} &a_{m2} & ... & a_{mn} \end{matrix} \right] = \left[ \begin{matrix} k*a_{11} & k*a_{12} & ... & k* a_{1n}\\ k*a_{21} & k*a_{22} & ... & k* a_{2n}\\ ...\\ k* a_{m1} & k*a_{m2} & ... & k*a_{mn} \end{matrix} \right] k a11a21...am1a12a22am2.........a1na2namn = ka11ka21...kam1ka12ka22kam2.........ka1nka2nkamn

在numpy中的计算如下:

a = np.array([[1, 2], [3, 4]])  
print(a) 输出如下
[[1 2]
 [3 4]]
 
 b = np.eye(2, 2, dtype=np.int16)  
print(b) 输出如下
[[1 0]
 [0 1]]
 
print(10 * a)
[[10 20]
 [30 40]]

4、矩阵的点乘

矩阵的点乘也称之为矩阵的相乘。

两个矩阵,当第一个矩阵的列数与第二个矩阵的行数相等时,可以用第一个矩阵点乘第二个矩阵,其结果是一个新的矩阵,它的行数是第一个矩阵的行数,列数是第二个矩阵的列数。它的位与第 i 行第 j 列的元素,等于第一个矩阵的第 i 行(它是一个向量)与第二个矩阵的第 j 列(它也是一个向量)这两个向量的内积。

向量内积(点乘/点积/数量积):两个向量对应元素相乘之后求和

a = [ a 1 , a 2 , . . . , a n ] b = [ b 1 , b 2 , . . . , b n ] a ∗ b = a 1 ∗ b 1 + a 2 ∗ b 2 + . . . + a n ∗ b n a = [a_{1},a_{2},...,a_{n}] \\ b = [b_{1},b_{2},...,b_{n}] \\ \\ a * b = a_{1}*b_{1} + a_{2}*b_{2} + ... + a_{n}*b_{n} a=[a1,a2,...,an]b=[b1,b2,...,bn]ab=a1b1+a2b2+...+anbn

矩阵可以看成是多维的向量,即单个向量的叠加。

矩阵点乘的意义:

矩阵点乘的意义有很多,此处仅简述矩阵在人工智能领域的意义。矩阵点乘最大的意义在于计算两个矩阵的相似度。

余弦相似度 c o s θ = A 、 B 矩阵相乘 A 向量长度 ∗ B 向量长度 余弦相似度 cos\theta = \frac{A、B矩阵相乘}{A向量长度*B向量长度} 余弦相似度cosθ=A向量长度B向量长度AB矩阵相乘
c o s θ cos\theta cosθ 越大,说明A、B两个矩阵越相似
A、B矩阵相乘 = A向量长度 x B向量长度 x c o s θ cos\theta cosθ = A向量长度 x B向量在A向量上的投影长度

[ a 11 a 12 . . . a 1 n a 21 a 22 . . . a 2 n . . . a m 1 a m 2 . . . a m n ] ∗ [ b 11 b 12 . . . b 1 n b 21 b 22 . . . b 2 n . . . b m 1 b m 2 . . . b m n ] = [ c 11 c 12 . . . c 1 n c 21 c 22 . . . c 2 n . . . c m 1 c m 2 . . . c m n ] \left[ \begin{matrix} a_{11} & a_{12} & ... & a_{1n}\\ a_{21} & a_{22} & ... & a_{2n}\\ ...\\ a_{m1} & a_{m2} & ... & a_{mn} \end{matrix} \right] * \left[ \begin{matrix} b_{11} & b_{12} & ... & b_{1n}\\ b_{21} & b_{22} & ... & b_{2n}\\ ...\\ b_{m1} & b_{m2} & ... & b_{mn} \end{matrix} \right] = \left[ \begin{matrix} c_{11} & c_{12} & ... & c_{1n}\\ c_{21} & c_{22} & ... & c_{2n}\\ ...\\ c_{m1} & c_{m2} & ... & c_{mn} \end{matrix} \right] a11a21...am1a12a22am2.........a1na2namn b11b21...bm1b12b22bm2.........b1nb2nbmn = c11c21...cm1c12c22cm2.........c1nc2ncmn

c 11 = a 11 ∗ b 11 + a 12 ∗ b 21 + . . + a 1 n ∗ b m 1 c 12 = a 11 ∗ b 12 + a 12 ∗ b 22 + . . + a 1 n ∗ b m 2 . . . c 1 n = a 11 ∗ b 1 n + a 12 ∗ b 2 n + . . + a 1 n ∗ b m n 其他以此类推 c_{11} = a_{11}*b_{11} +a_{12}*b_{21} + .. +a_{1n}*b_{m1} \\ c_{12} = a_{11}*b_{12} +a_{12}*b_{22} + .. +a_{1n}*b_{m2} \\ ...\\ c_{1n} = a_{11}*b_{1n} +a_{12}*b_{2n} + .. +a_{1n}*b_{mn} \\ \\ 其他以此类推 c11=a11b11+a12b21+..+a1nbm1c12=a11b12+a12b22+..+a1nbm2...c1n=a11b1n+a12b2n+..+a1nbmn其他以此类推

举例如下:

[ 1 2 3 4 ] ∗ [ 5 6 7 8 ] = [ 19 22 43 50 ] \left[ \begin{matrix} 1 & 2\\ 3 & 4\\ \end{matrix} \right] * \left[ \begin{matrix} 5 & 6\\ 7 & 8\\ \end{matrix} \right] = \left[ \begin{matrix} 19 & 22\\ 43 & 50\\ \end{matrix} \right] [1324][5768]=[19432250]

19 = 1*5 + 2*7
22 = 1*6 + 2*8
43 = 3*5 + 4*7
50 = 3*6 + 4*8

在numpy中的计算如下:

# a · b = a[0] * b[0] + a[1] * b[1] + ... + a[n] * b[n]
# 一维矩阵相乘
a = [1, 2, 3]
b = [1, 0, 2]
print(np.dot(a, b))  # 7

# 二维矩阵相乘
a = [[1, 0], [0, 1]]
b = [[4, 1], [2, 2]]
print(np.dot(a, b))
# [[4 1]
#  [2 2]]

5、矩阵的转置

矩阵的转置是一个矩阵,它的第 i 行 第 j 列的值等于原矩阵的第 j 行第 i 列的值。矩阵A的转置用 A T A^T AT表示。
[ a 11 a 12 . . . a 1 n a 21 a 22 . . . a 2 n . . . a m 1 a b m 2 . . . a m n ] T = [ a 11 a 21 . . . a m 1 a 12 a 22 . . . a m 2 . . . a 1 n a b 2 n . . . a m n ] \left[ \begin{matrix} a_{11} & a_{12} & ... & a_{1n}\\ a_{21} & a_{22} & ... & a_{2n}\\ ...\\ a_{m1} &ab_{m2} & ... & a_{mn} \end{matrix} \right] ^T = \left[ \begin{matrix} a_{11} & a_{21} & ... & a_{m1}\\ a_{12} & a_{22} & ... & a_{m2}\\ ...\\ a_{1n} &ab_{2n} & ... & a_{mn} \end{matrix} \right] a11a21...am1a12a22abm2.........a1na2namn T= a11a12...a1na21a22ab2n.........am1am2amn

在numpy中的计算如下:

数组转置是一个常见的线性代数操作,它指的是将数组的行变为列,列变为行。在编程中,特别是在处理矩阵或二维数组时,这个操作非常有用

ndarray.T

arr = np.array([[1, 3, 5], [2, 4, 6]])
print(arr)
# [[1 3 5]
#  [2 4 6]]
print(arr.T)
# [[1 2]
#  [3 4]
#  [5 6]]

6、矩阵的逆

矩阵的逆类似于数的倒数,矩阵A的逆用 A − 1 A^{-1} A1表示。
如果一个n阶方阵A,存在另一个n阶方阵B,使得 A * B = B * A = E,则称方针B为矩阵A的逆,或者称矩阵B为矩阵A的逆矩阵。如果矩阵A的逆矩阵存在,则称矩阵A是可逆矩阵

矩阵A的逆矩阵的转置等于矩阵A的转置的逆,即 ( A − 1 ) T (A^{-1})^T (A1)T = ( A T ) − 1 (A^T)^{-1} (AT)1

矩阵的逆的意义:
解决“矩阵除法”问题:由于矩阵本身没有除法的概念,但有时需要在矩阵运算中进行类似除法的操作。矩阵的逆就是用来解决这种“矩阵除法”问题的。例如,如果我们要计算 (X \times A = B),并且 (A) 是可逆的,那么可以通过左乘 A − 1 A^{-1} A1 来得到 (X = B \times A − 1 A^{-1} A1)。

在numpy中的计算如下:

# 定义一个矩阵
matrix = np.array([[1, 2], [3, 4]])
print(matrix)

# [[1 2]
#  [3 4]]
# 求矩阵的逆
inverse_matrix = np.linalg.inv(matrix)

print(inverse_matrix)
# [[-2.   1. ]
#  [ 1.5 -0.5]]
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值