原文:https://docs.scipy.org/doc/numpy/reference/generated/numpy.matmul.html
校对:(虚位以待)
numpy.
matmul
(a, b, out=None)两个数组的矩阵乘积。
行为取决于参数以下面的方式。
不允许乘以标量乘法,请改用*
。注意,将一堆矩阵乘以一个向量将产生一个向量栈,但是matmul不会这样认出它。
matmul
与两个重要方面不同于dot
。
警告
此功能是初步的,包括在Numpy 1.10中用于测试和文档。它的语义不会改变,但可选参数的数量和顺序将会改变。
版本1.10.0中的新功能。
参数: | a:array_like
b:array_like
out:ndarray,可选
|
---|---|
返回: | 输出:ndarray
|
上升: | ValueError
|
笔记
matmul函数实现了在PEP465之后的Python 3.5中引入的@运算符的语义。
例子
对于2-D数组,它是矩阵积:
>>> a = [[1, 0], [0, 1]]
>>> b = [[4, 1], [2, 2]]
>>> np.matmul(a, b)
array([[4, 1],
[2, 2]])
对于与1-D混合的2-D,结果是通常的。
>>> a = [[1, 0], [0, 1]]
>>> b = [1, 2]
>>> np.matmul(a, b)
array([1, 2])
>>> np.matmul(b, a)
array([1, 2])
广播对于数组的栈是常规的
>>> a = np.arange(2*2*4).reshape((2,2,4))
>>> b = np.arange(2*2*4).reshape((2,4,2))
>>> np.matmul(a,b).shape
(2, 2, 2)
>>> np.matmul(a,b)[0,1,1]
98
>>> sum(a[0,1,:] * b[0,:,1])
98
Vector,vector返回标量内积,但两个参数都不是复共轭:
>>> np.matmul([2j, 3j], [2j, 3j])
(-13+0j)
标量乘法会引发错误。
>>> np.matmul([1,2], 3)
Traceback (most recent call last):
...
ValueError: Scalar operands are not allowed, use '*' instead