【发布时间】:2019-01-13 21:38:38
【问题描述】:
我有两个数组:
L, M, N = 6, 31, 500
A = np.random.random((L, M, N))
B = np.random.random((L, L))
我正在尝试获取一个数组 C,这样:
C = B * A
C has dimension [L, M, N]
我尝试了在 link 上发布的答案,但它没有给我想要的输出。
上述代码的for循环版本是:
L, M, N = 6, 31, 500
A = np.random.random((L, M, N))
B = np.random.random((L, L))
z1 = []
for j in range(M):
a = np.squeeze(A[:, j, :])
z1.append(np.dot(B, a))
z2 = np.stack(z1)
【问题讨论】:
-
如果您将
B的2 个维度设为不同,则歧义会减少。我认为您不需要squeeze。A[:,j:]将是 2d。 -
np.einsum('kl,lmn->kmn', B, A)应该可以工作;但您的迭代解决方案意味着“mkn”顺序。
标签: numpy python-3.5