Numpy - 阵列点积取决于输入顺序

时间:2017-07-12 20:44:18

标签: python arrays numpy

我正在尝试使用点积,如果我将转置数组作为第一个参数,我会得到正确的答案(单个值),因为它实际上是产品sum(a*b)的总和。但是,如果我将转置数组作为第二个参数,它会给我一个2x2数组。为什么呢?

a = np.array([[1],[2]])

b = np.array([[3],[4]])

np.dot(a,b.T)
Out[208]: 
array([[3, 4],
       [6, 8]])

np.dot(a.T,b)
Out[209]: array([[11]])

np.dot(b.T, a)
Out[210]: array([[11]])

2 个答案:

答案 0 :(得分:2)

如果将k乘以1矩阵(向量)与1乘k矩阵相乘,则得到k×k矩阵。 如果将1乘k矩阵与k乘1矩阵相乘,则得到1乘1矩阵。

答案 1 :(得分:1)

np.dot不计算多个数组的点积。它计算两个ndarray s的矩阵乘法。

您可以使用np.dot计算两个向量的点积,因为向量ab的点积只是a^T * b。但是,与常规向量一样,a^T * bb * a^T会产生两个截然不同的答案。前者计算向量的点积,而后者计算ba^T的乘积。