2016-08-29 87 views
2

在蟒我有2個三維數組:加快multilple矩陣產品numpy的

T與大小(n,n,n)

U與大小(k,n,n)

TU可以看作許多2- d排列一個接一個。我需要乘以所有這些矩陣,即我必須執行以下操作:

for i in range(n): 
     H[:,:,i] = U[:,:,i].dot(T[:,:,i]).dot(U[:,:,i].T) 

由於n可能是非常大的,我想知道,如果這個操作可能會以某種方式與numpy的加快。

回答

3

仔細觀看迭代器和它們如何參與這些點積的減少,我們可以把所有這些到一個np.einsum實現像這樣 -

H = np.einsum('ijk,jlk,mlk->imk',U,T,U)