numpy dot表现得很奇怪

时间:2015-02-25 14:44:07

标签: python numpy

我是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函数的行为会有所不同?

1 个答案:

答案 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)