矩阵 - 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.]])
>>>
我有一个向量(形状(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.]])
>>>