bundles / numpy latest / numpy / linalg / matmul
_ArrayFunctionDispatcher
numpy.linalg:matmul
source: build-install/usr/lib/python3.14/site-packages/numpy/linalg/_linalg.py:3325
Signature
def matmul(x1, x2, /)Summary
Computes the matrix product.
Extended Summary
This function is Array API compatible, contrary to numpy.matmul.
Parameters
x1: array_likeThe first input array.
x2: array_likeThe second input array.
Returns
out: ndarrayThe matrix product of the inputs. This is a scalar only when both
x1,x2are 1-d vectors.
Raises
: ValueErrorIf the last dimension of
x1is not the same size as the second-to-last dimension ofx2.If a scalar value is passed in.
Examples
For 2-D arrays it is the matrix product:a = np.array([[1, 0], [0, 1]]) b = np.array([[4, 1], [2, 2]]) np.linalg.matmul(a, b)✓
array([[4, 1],
[2, 2]])
For 2-D mixed with 1-D, the result is the usual.
a = np.array([[1, 0], [0, 1]]) b = np.array([1, 2]) np.linalg.matmul(a, b) np.linalg.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.linalg.matmul(a,b).shape✓
(2, 2, 2)
np.linalg.matmul(a, b)[0, 1, 1] sum(a[0, 1, :] * b[0 , :, 1])✗
np.int64(98)Vector, vector returns the scalar inner product, but neither argument is complex-conjugated:
np.linalg.matmul([2j, 3j], [2j, 3j])
✗np.complex128(-13+0j)Scalar multiplication raises an error.
np.linalg.matmul([1,2], 3)
✓Traceback (most recent call last):
File "<doctest numpy.linalg:matmul[0]>", line 1, in <module>
np.linalg.matmul([1,2], 3)
~~~~~~~~~~~~~~~~^^^^^^^^^^
File "/home/runner/dev/numpy/build-install/usr/lib/python3.14/site-packages/numpy/linalg/_linalg.py", line 3406, in matmul
return _core_matmul(x1, x2)
ValueError: matmul: Input operand 1 does not have enough dimensions (has 0, gufunc core with signature (n?,k),(k,m?)->(n?,m?) requires 1)
See also
Aliases
numpy.linalg.matmul