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

Phy*_*ist 2 python numpy linear-algebra vectorization scipy

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

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

Div*_*kar 5

您可以执行逐元素乘法,然后沿第二轴求和,如下所示 -

C = (A*B).sum(1)
Run Code Online (Sandbox Code Playgroud)

这些乘法和求和运算可以一次实现np.einsum,如下所示 -

C = np.einsum('ij,ij->i',A,B)
Run Code Online (Sandbox Code Playgroud)