Skip to main content
`Ctrl`+`K`

# numpy.matvec

numpy.matvec(x1, x2, /, out=None, *, casting='same_kind', order='K', dtype=None, subok=True[, signature, axes, axis]) = <ufunc 'matvec'>

  Matrix-vector dot product of two arrays.

  Given a matrix (or stack of matrices) \(\mathbf{A}\) in `x1` and a vector (or stack of vectors) \(\mathbf{v}\) in `x2`, the matrix-vector product is defined as:

  \[\mathbf{A} \cdot \mathbf{b} = \sum_{j=0}^{n-1} A_{ij} v_j\]

  where the sum is over the last dimensions in `x1` and `x2` (unless `axes` is specified). (For a matrix-vector product with the vector conjugated, use `np.vecmat(x2, x1.mT)`.)

  Added in version 2.2.0.

  Parameters:
    x1, x2 array_like

      Input arrays, scalars not allowed.

    out ndarray, optional

      A location into which the result is stored. If provided, it must have the broadcasted shape of `x1` and `x2` with the summation axis removed. If not provided or None, a freshly-allocated array is used.

    **kwargs

      For other keyword-only arguments, see the ufunc docs.

  Returns:
    y ndarray

      The matrix-vector product of the inputs.

  Raises:
    ValueError

      If the last dimensions of `x1` and `x2` are not the same size.

      If a scalar value is passed in.

  See also

  `vecdot`

    Vector-vector product.

  `vecmat`

    Vector-matrix product.

  `matmul`

    Matrix-matrix product.

  `einsum`

    Einstein summation convention.

  Examples

  Rotate a set of vectors from Y to X along Z.

      >>> a = np.array([[0., 1., 0.],
      ...               [-1., 0., 0.],
      ...               [0., 0., 1.]])
      >>> v = np.array([[1., 0., 0.],
      ...               [0., 1., 0.],
      ...               [0., 0., 1.],
      ...               [0., 6., 8.]])
      >>> np.matvec(a, v)
      array([[ 0., -1.,  0.],
             [ 1.,  0.,  0.],
             [ 0.,  0.,  1.],
             [ 6.,  0.,  8.]])