Python3中的numpy点和matmul函数有什么区别?[重复]

问题描述 投票:0回答:1

我试着用这两个函数工作,它们似乎是一样的。但是为什么numpy会有两个不同的函数来完成同样的操作呢?我只是想确认一下。

到目前为止,我发现它们对二维数组的工作原理是一样的,但没有发现任何区别。

python numpy numpy-ndarray
1个回答
1
投票

@操作符调用数组的 垫料 方法,而不是点。这个方法在API中也以函数np.matmul的形式存在。

>>> a = np.random.rand(8,13,13)
>>> b = np.random.rand(8,13,13)
>>> np.matmul(a, b).shape
(8, 13, 13)

从文档中可以看出。

matmul与dot有两个重要的区别.

  • 不允许用标量进行乘法。
  • 矩阵的堆栈被广播在一起,就像矩阵是元素一样。

最后一点明确指出,当传递3D(或更高维)数组时,dot和matmul方法的行为是不同的。再引用文档中的一些内容。

对于matmul,

如果任何一个参数是N-D,N > 2,它将被视为驻留在最后两个索引中的矩阵堆栈,并相应地进行广播.对于np.dot:

对于二维数组,它相当于矩阵乘法,对于一维数组,它相当于向量的内积(不含复数共轭)。对于N个维度,它是a的最后一个轴和b的第二到最后一个轴的和积。

更多信息请查看。numpy dot()和Python 3.5+矩阵乘法的区别 @。

在此我举出最上面的答案,因为很清楚两者的区别是什么。如果您需要更多的帮助,请说。

© www.soinside.com 2019 - 2024. All rights reserved.