This is a pre-release version (latest).Go to latest (2.4.4)
{ } Raw JSON

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_like

The first input array.

x2 : array_like

The second input array.

Returns

out : ndarray

The matrix product of the inputs. This is a scalar only when both x1, x2 are 1-d vectors.

Raises

: ValueError

If the last dimension of x1 is not the same size as the second-to-last dimension of x2.

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

numpy.matmul

Aliases

  • numpy.linalg.matmul