Numpy python中的多维数组乘法

Numpy python中的多维数组乘法,numpy,python-3.5,Numpy,Python 3.5,我有两个阵列: 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] 我试图回答张贴在这个,但它没有给我想要的输出 上述代码的for循环版本为: L, M, N = 6, 31, 500 A = np.random.random((L, M, N)) B = np.rando

我有两个阵列:

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]  
我试图回答张贴在这个,但它没有给我想要的输出

上述代码的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)

我认为您正在寻找可以指定沿哪些轴求和的位置:

np.tensordot(B,A,axes=(1,0))

如果您将
B
的两个维度设置为不同,则模糊性会减少。我认为您不需要挤压
<代码>A[:,j:::
将是2d。
np.einsum('kl,lmn->kmn',B,A)
应该可以工作;但是你的迭代解意味着一个“mkn”顺序。