numpy.matmul(a,b,out=None)¶Matrix product of two arrays.
The behavior depends on the arguments in the following way.
Multiplication by a scalar is not allowed, use* instead. Note thatmultiplying a stack of matrices with a vector will result in a stack ofvectors, but matmul will not recognize it as such.
matmul differs fromdot in two important ways.
Warning
This function is preliminary and included in NumPy 1.10.0 for testingand documentation. Its semantics will not change, but the number andorder of the optional arguments will.
New in version 1.10.0.
| Parameters: |
|
|---|---|
| Returns: |
|
| Raises: |
|
See also
Notes
The matmul function implements the semantics of the@ operator introducedin Python 3.5 following PEP465.
Examples
For 2-D arrays it is the matrix product:
>>>a=[[1,0],[0,1]]>>>b=[[4,1],[2,2]]>>>np.matmul(a,b)array([[4, 1], [2, 2]])
For 2-D mixed with 1-D, the result is the usual.
>>>a=[[1,0],[0,1]]>>>b=[1,2]>>>np.matmul(a,b)array([1, 2])>>>np.matmul(b,a)array([1, 2])
Broadcasting is conventional for stacks of arrays
>>>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 returns the scalar inner product, but neither argumentis complex-conjugated:
>>>np.matmul([2j,3j],[2j,3j])(-13+0j)
Scalar multiplication raises an error.
>>>np.matmul([1,2],3)Traceback (most recent call last):...ValueError:Scalar operands are not allowed, use '*' instead