矩阵 - python 中的向量乘法(numpy)

matrix - vector multiplication in python (numpy)

我有一个向量(形状(4,1))和一个矩阵(形状(4,4))

我正在尝试使用 * 运算符将它们相乘,该运算符在矩阵对象上使用时是矩阵乘法,但出现值错误:

ValueError: shapes (4,1) and (4,4) not aligned: 1 (dim 1) != 4 (dim 0)

我该怎么做?我了解如何手动执行此操作,并认为使用 numpy

会相当简单

不能将 4x1 向量与 4x4 矩阵相乘。

你应该反其道而行之,将矩阵乘以向量。或者转置向量。

请记住,对于矩阵乘法,第一个矩阵的第二维必须等于第二个矩阵的第一维。因此,无法执行 4x1 向量和 4x4 矩阵的矩阵乘法。

可以做的是转置向量(使用myvector.T)所以你得到一个1x4向量并乘以那个用你的 4x4 矩阵。

或者,您可以在右侧乘以向量。

>>> v1 = numpy.arange(1,5).reshape(1,4)
>>> v1
array([[1, 2, 3, 4]])
>>> v1.shape
(1, 4)
>>> v2 = numpy.ones((4,4))
>>> v2
array([[ 1.,  1.,  1.,  1.],
       [ 1.,  1.,  1.,  1.],
       [ 1.,  1.,  1.,  1.],
       [ 1.,  1.,  1.,  1.]])
>>> v2.shape
(4, 4)
>>> v3 = v1*v2
>>> v3
array([[ 1.,  2.,  3.,  4.],
       [ 1.,  2.,  3.,  4.],
       [ 1.,  2.,  3.,  4.],
       [ 1.,  2.,  3.,  4.]])
>>>