我正在尝试使用点积,如果我将转置数组作为第一个参数,我会得到正确的答案(单个值),因为它实际上是产品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]])
答案 0 :(得分:2)
如果将k乘以1矩阵(向量)与1乘k矩阵相乘,则得到k×k矩阵。 如果将1乘k矩阵与k乘1矩阵相乘,则得到1乘1矩阵。
答案 1 :(得分:1)
np.dot
不计算多个数组的点积。它计算两个ndarray
s的矩阵乘法。
您可以使用np.dot
计算两个向量的点积,因为向量a
和b
的点积只是a^T * b
。但是,与常规向量一样,a^T * b
和b * a^T
会产生两个截然不同的答案。前者计算向量的点积,而后者计算b
和a^T
的乘积。