numpy.matvec#

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

两个数组的矩阵-向量点积。

给定 x1 中的矩阵(或矩阵堆栈)\(\mathbf{A}\)x2 中的向量(或向量堆栈)\(\mathbf{v}\),矩阵-向量积定义为

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

其中求和是在 x1x2 的最后维度上进行的(除非指定了 axes)。(对于向量共轭的矩阵-向量积,请使用 np.vecmat(x2, x1.mT)。)

2.2.0 版新增。

参数:
x1, x2array_like

输入数组,不允许标量。

outndarray, 可选

存储结果的位置。如果提供,它必须具有 x1x2 广播后的形状,并移除求和轴。如果未提供或为 None,则使用新分配的数组。

**kwargs

有关其他仅限关键字的参数,请参阅ufunc 文档

返回:
yndarray

输入数组的矩阵-向量积。

抛出:
ValueError

如果 x1x2 的最后维度大小不同。

如果传入了标量值。

另请参阅

vecdot

向量-向量积。

vecmat

向量-矩阵积。

matmul

矩阵-矩阵积。

einsum

爱因斯坦求和约定。

示例

将一组向量沿 Z 轴从 Y 旋转到 X。

>>> 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.]])