介绍元素级乘法
矩阵乘积
NumPy的点函数
这篇文章主要介绍NumPy如何实现矩阵乘法,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!
NumPy支持的几类矩阵乘法也很重要。
元素级乘法
你已看过了一些元素级乘法。你可以使用乘法函数或*运算符来实现。回顾一下,它看起来是这样的:
m =, np.array ([[1, 2, 3], [4、5、6]]) 米 #,显示以下结果: #,阵列([[1,2,3]。 (4 #,,,,5日,6]]) 时间=n m 0.25 *, n #,显示以下结果: #,阵列([[,,0.25,0.5,,0.75], #,,(,1只,1.25,,1.5,]]) m *, n #,显示以下结果: #,阵列([[1只,0.25,,2.25], #,,(,4只,6.25,9只]]) np.multiply (m, n), #,相当于,m *, n #,显示以下结果: #,阵列([[1只,0.25,,2.25], #,,(,4只,6.25,9只]])
矩阵乘积
要获得矩阵乘积,你可以使用NumPy的matmul函数。
如果你有兼容的形状,那就像这样简单:
a =, np.array ([[1、2、3、4], [5、6、7、8]]) 一个 #,显示以下结果: #,阵列([[1,,2,,3,,4], #,,(5,6,7,8]]) a.shape #,显示以下结果: #,(2,4) 时间=b np.array ([[1, 2, 3], [4、5、6], [7 8 9], [10 11 12]]) b #,显示以下结果: #,阵列([[,1,2,3]。 #,,(,4,5,6), #,,[,7,8,9), (#,,10,11,12]]) b.shape #,显示以下结果: #,(4),3) 时间=c np.matmul (a, b) c #,显示以下结果: #,阵列([[,70,80,90]。 #,,(158,,184,,210]]) c.shape #,显示以下结果: #,(2,3)
如果你的矩阵具有不兼容的形状,则会出现以下错误:
np.matmul (b, a) #,显示以下错误: #,ValueError: shapes (4,3),以及(2、4),not 一致:,3,(dim 1), !=, 2, (dim 0)
NumPy的点函数
有时候,在你以为要用matmul函数的地方,你可能会看到NumPy的点函数。事实证明,如果矩阵是二维的,那么点和matmul函数的结果是相同的。
所以这两个结果是等价的:
a =, np.array ([[1、2], [3,4]]) 一个 #,显示以下结果: #,数组([[1,2], #,,[3,4]]) np.dot(一个) #,显示以下结果: #,阵列([[7,大敌;10], (15 #,,,,22]]) a.dot (a), #,你还要叫你可以直接对,“ndarray”,调用,“点”, #,显示以下结果: #,阵列([[7,大敌;10], (15 #,,,,22]]) np.matmul(一个) #,阵列([[7,大敌;10], (15 #,,,,22]])
虽然这两个函数对于二维数据返回相同的结果,但在用于其他数据形状时,你应该谨慎选择。你可以在matmul和点文档中详细了解它们的差异,并找到其他NumPy函数的链接。