nlcpy.matmul

nlcpy.matmul = <ufunc 'nlcpy_matmul'>

Matrix product of two arrays.

Parameters:
x1,x2array_like

Input arrays, scalars not allowed.

outndarray or None, optional

A location into which the result is stored. If provided, it must have a shape that the inputs broadcast to. If not provided or None, a freshly-allocated array is returned. A tuple (possible only as a keyword argument) must have length equal to the number of outputs.

Returns:
yndarray

The matrix product of the inputs. If x1 and x2 are both scalars, this function returns the result as a 0-dimension array.

See also

dot

Dot product of two arrays.

Note

The behavior depends on the arguments in the following way.

  • If both arguments are 2-D they are multiplied like conventional matrices.

  • If the first argument is 1-D, it is promoted to a matrix by prepending a 1 to its dimensions. After matrix multiplication the prepended 1 is removed.

  • If the second argument is 1-D, it is promoted to a matrix by appending a 1 to its dimensions. After matrix multiplication the appended 1 is removed.

Restriction

  • x1.ndim > 2 or x2.ndim > 2: NotImplementedError occurs.

Examples

For 2-D arrays it is the matrix product:

>>> import nlcpy as vp
>>> a = vp.array([[1, 0],[0, 1]])
>>> b = vp.array([[4, 1],[2, 2]])
>>> vp.matmul(a, b)
array([[4, 1],
       [2, 2]])

For 2-D mixed with 1-D, the result is the usual.

>>> a = vp.array([[1, 0],[0, 1]])
>>> b = vp.array([1, 2])
>>> vp.matmul(a, b)
array([1, 2])
>>> vp.matmul(b, a)
array([1, 2])