我是numpy
的新手。所以我有一个非常简单的矩阵因子乘法,如下所示:
vecT = np.dot(matDT, vecGradU)
现在,根据输入,有时会产生列向量
print("matDT -> ", matDT.shape)
print("vecGradU -> ", vecGradU.shape)
print("vecT -> ", vecT.shape)
这是一个输入的结果:
matDT -> (4, 4)
vecGradU -> (4,)
vecT -> (4,)
用于其他输入
matDT -> (9, 9)
vecGradU -> (9,)
vecT -> (1, 9)
为什么dot
函数的行为会有所不同?
答案 0 :(得分:3)
检查两种情况下的参数类型。我怀疑在结果具有形状(1,9)的情况下,matDT
是一个numpy matrix
,而不是numpy ndarray
。
例如,
In [52]: a = np.array([[1, 2], [3, 4]])
In [53]: m = np.matrix([[1, 2], [3, 4]])
In [54]: b = np.array([4,5])
In [55]: np.dot(a, b)
Out[55]: array([14, 32])
In [56]: np.dot(a, b).shape
Out[56]: (2,)
In [57]: np.dot(m, b)
Out[57]: matrix([[14, 32]])
In [58]: np.dot(m, b).shape
Out[58]: (1, 2)