我想用2个向量做一个简单的矩阵乘法:这样A * B.T = 3x3Matrix。
但是numpy会以某种方式返回标量或向量。
我已经尝试过:
0xffffffb0
但是没什么用,对我来说这似乎是一个简单的操作,但我只是无法解决
答案 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