Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/340.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python3中的numpy dot和matmul函数有什么区别?_Python_Numpy_Numpy Ndarray - Fatal编程技术网

Python3中的numpy dot和matmul函数有什么区别?

Python3中的numpy dot和matmul函数有什么区别?,python,numpy,numpy-ndarray,Python,Numpy,Numpy Ndarray,我试过使用这两个函数,它们看起来是一样的。但是为什么numpy在同一个操作中有两个不同的功能呢?我只是想确定一下 到目前为止,我发现它们对2D阵列的工作原理相同,但在任何地方都没有发现任何差异 操作符调用数组的matmul方法,而不是dot。此方法也作为函数np.matmul出现在API中 >>> a = np.random.rand(8,13,13) >>> b = np.random.rand(8,13,13) >>> np.matmul

我试过使用这两个函数,它们看起来是一样的。但是为什么numpy在同一个操作中有两个不同的功能呢?我只是想确定一下


到目前为止,我发现它们对2D阵列的工作原理相同,但在任何地方都没有发现任何差异

操作符调用数组的matmul方法,而不是dot。此方法也作为函数np.matmul出现在API中

>>> 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的倒数第二个轴的和积

有关更多信息,请查看:


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

这里已经给出了答案:在提问之前尝试搜索。这主要是历史问题
np.dot
长期以来一直是
numpy
的一部分
matmul
及其操作符
@
是一种新的操作方式,具有处理3d(及更大)阵列的不同方式。对于2d和1d数组,它们基本上是相同的。实际上,我在这里发布之前就发现了这篇文章。只是标题误导了我,因为我不知道“@”与“np.matmul”的作用是一样的。当问题有明确答案时,无需回答,只需对其进行评论以指出这一点。谢谢您的回复。我不知道“@”实际上用于matmul。