在使用 NumPy 过程中遇到 矩阵乘积有些不清楚,查询资料做个笔记。
矩阵乘积分为三种,常用的就是第一种和第二种,以下结果以python代码为准,和线性代数有出入
设A为 m * p 的矩阵,B为 p* n 的矩阵,那么称 A * B 的矩阵C为矩阵A与B的乘积
python称为矩阵点乘,写法为 A.dot(B) ,计算方式如下,两者相同
python 测试:
a1 = np.array([[1,2,3],[4,5,6]]) # a1为2*3矩阵 a2 = np.array([[1,2],[3,4],[5,6]]) # a2为3*2矩阵 print(a1.dot(a2)) """ [[22 28] [49 64]] """如下所示:
设矩阵 A 和矩阵 B 都是 m*n 的矩阵,及行列相同,则称 A * B 的矩阵 C 为哈达马积,
python 中称为 矩阵乘积 ,写法为 A * B
区别:
在python中,不要求 A,B 矩阵 都是 mn 矩阵,python还支持 A mn 矩阵,B为 1*n 阶矩阵
python 测试
A、B 矩阵 都是 2*3 阶矩阵,对应位置相乘, a * b = b * a
a = np.array([[4, 5, 6], [1, 2, 3]]) b = np.array([[6, 5, 4], [3, 2, 1]]) print(a*b) """ [[24 25 24] [ 3 4 3]] """A 33 阶矩阵,B 为 13 阶矩阵,对应位置相乘, a * b = b * a
a = np.array([[1, 2, 3], [4, 5, 6]]) b = np.array([[7, 8, 9]]) print(a * b) """ [[ 7 16 27] [28 40 54]] """克罗内克积是两个任意大小的矩阵间的运算,符号记作⊗。克罗内克积也被称为直积或张量积
该乘积 python 不涉及,没看到相关方法
在 python 中,点乘用的 dot() 方法,A * B 需要保证A矩阵列数等于B矩阵行数, 乘用的 * 符号
