2016-01-29 83 views
1

A and B都是與shape(N,3)陣列。它們各自包含N個向量,使得A[0] = a0 (vector), A[1] = a1...B[0] = b0, B[1] = b1...如何計算python中兩個向量數組的點積?

我想計算N對向量an和bn的點積。換句話說,我想獲得一個shape(N,1)這樣的數組C,這樣C[i] = np.dot(A[i],B[i]).在python中這樣做的最有效方法是什麼(例如使用向量化代碼)?

+0

對於物理學家來說,在這個問題描述中會出現令人驚訝的揮手。你嘗試過什麼,矢量化或沒有?小樣本數組會很好。 numpy的點工具是'np.dot','np.tensordot','np.einsum'和新的'@'。 – hpaulj

回答

5

可以進行逐元素相乘,然後沿着第二軸總之,像這樣 -

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

這些乘法和加法的操作可以在一個去實現與np.einsum,像這樣 -

C = np.einsum('ij,ij->i',A,B) 
相關問題