【发布时间】:2016-01-28 18:05:11
【问题描述】:
我正在尝试使用 numpy.einsum 来简化代码中的循环。
目前,我的代码如下所示:
k = 100
m = 50
n = 10
A = np.arange(k*m*n).reshape(k, m, n)
B = np.arange(m*m).reshape(m, m)
T = np.zeros((n, n))
for ind in xrange(k):
T += np.dot(A[ind,:,:].T, np.dot(B, A[ind,:,:]))
我正在尝试使用numpy.einsum 作为此循环的替代方案:
Tp = np.einsum('nij,njk->ik', np.einsum('nij,jk->nik', A.transpose(0,2,1), B), A)
print np.allclose(T, Tp)
是否可以使用单个numpy.einsum 而不是两个?
【问题讨论】:
-
在我的电脑上,
print (np.allclose(T, Tp))是假的??。
标签: python arrays numpy vectorization numpy-einsum