如何将 numpy 数组乘以 numpy 矩阵



我有一个矩阵T

[ 0.2  0.4  0.4]
[ 0.8  0.2  0. ]
[ 0.8  0.   0.2]
T = numpy.mat("0.2 0.4 0.4;0.8 0.2 0.0;0.8 0.0 0.2")

我有向量v,numpy.array(73543, -36772, 36772)

v = numpy.array([ 73543, -36772, 36772])

如何在 python 中正确将数组v乘以矩阵T

谢谢

克里斯

使用numpy.dot,这与*运算符不太一样:

In [138]: T.dot(v) #the resulting shape is (1, 3), not (3, 1) if you don't care
Out[138]: matrix([[ 14708.6,  51480. ,  66188.8]])
In [139]: v.dot(T) #same with v * T
Out[139]: matrix([[ 14708.6,  22062.8,  36771.6]])
In [140]: T.dot(v[:, None]) #if you need the shape to be (3, 1) when doing T*v
Out[140]: 
matrix([[ 14708.6],
        [ 51480. ],
        [ 66188.8]])

简单:

v * T

Numpy 重载算术以大多数时候有意义的方式运行。在您的情况下,由于 T 是一个矩阵,因此它会在执行乘法之前将 v 转换为矩阵。这会将 v 转换为行向量。因此,v*T执行矩阵乘法,但T*v抛出异常,因为 v 是错误的形状。但是,您可以使用 v.reshape(3,1) 使 v 成为正确的形状,或者将 v 视为具有 T.dot(v)numpy.dot(T,v) 的正确方向的向量。

相关内容

  • 没有找到相关文章

最新更新