向量的Numpy矩阵乘法

时间:2019-12-26 01:55:31

标签: python numpy

我想用2个向量做一个简单的矩阵乘法:这样A * B.T = 3x3Matrix。

但是numpy会以某种方式返回标量或向量。

我已经尝试过:

0xffffffb0

但是没什么用,对我来说这似乎是一个简单的操作,但我只是无法解决

2 个答案:

答案 0 :(得分:4)

之所以要得到标量,是因为您要在numpy中乘以两个1D向量,从而产生2个向量的内积。您需要将向量重塑为形状(3,1),将其转换为2D形状,然后在执行向量乘法时获得预期的结果。检查下面的代码段

>>> import numpy as np
>>> A = np.array([1,2,3])
>>> B = np.array([4,5,6])
>>> A.shape
(3,)
>>> B.shape
(3,)
>>> AA = A.reshape(3, 1)
>>> BB = B.reshape(3, 1)
>>> AA.shape
(3, 1)
>>> BB.shape
(3, 1)
>>> np.matmul(AA, np.transpose(BB))
array([[ 4,  5,  6],
       [ 8, 10, 12],
       [12, 15, 18]])

答案 1 :(得分:0)

使用numpy.reshape一直对我有用。 也许是因为矩阵的大小而绊倒了。

A 应该是(3,1)和 B 。转置应该是(1,3)。

使用numpy.dot时,两个矩阵的内部大小应相同。您的情况是(1)。内部应为1,因为AxA_transpose的内部为(3,1)x(1,3)。结果将是3x3矩阵。

要做:

A_ = np.reshape(A,(1,-1)) # array (3,1)
B_ = np.reshape(B,(1,-1))
C = np.dot(A_,B_.T) # T for transpose