如何计算python中两个向量数组的点积?

时间:2016-01-29 17:23:33

标签: python numpy scipy vectorization linear-algebra

A and B都是shape(N,3)的数组。它们每个都包含N个向量,使A[0] = a0 (vector), A[1] = a1...B[0] = b0, B[1] = b1...

我想计算N对向量an和bn的点积。换句话说,我想获得一个带有shape(N,1)的数组C,以便C[i] = np.dot(A[i],B[i]).在python中执行此操作的最有效方法是什么?(例如使用向量化代码)?

1 个答案:

答案 0 :(得分:5)

你可以执行逐元素乘法,然后沿第二轴求和,就像这样 -

C = (A*B).sum(1)

这些乘法和求和运算可以与np.einsum一起实现,就像这样 -

C = np.einsum('ij,ij->i',A,B)