2016-08-29 68 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)