矩阵三种乘积的区别

it2026-03-30  6

在使用 NumPy 过程中遇到 矩阵乘积有些不清楚,查询资料做个笔记。

矩阵乘积分为三种,常用的就是第一种和第二种,以下结果以python代码为准,和线性代数有出入

矩阵乘积

百度百科:

设A为 m * p 的矩阵,B为 p* n 的矩阵,那么称 A * B 的矩阵C为矩阵A与B的乘积

python:

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]] """

如下所示:

哈达马积(Hadamard product)

百度百科:

设矩阵 A 和矩阵 B 都是 m*n 的矩阵,及行列相同,则称 A * B 的矩阵 C 为哈达马积,

python:

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]] """

克罗内克积(Kronecker Product)

克罗内克积是两个任意大小的矩阵间的运算,符号记作⊗。克罗内克积也被称为直积或张量积

该乘积 python 不涉及,没看到相关方法

总结

在 python 中,点乘用的 dot() 方法,A * B 需要保证A矩阵列数等于B矩阵行数, 乘用的 * 符号

最新回复(0)