在 python 中乘以多维数组

Multiplying multidimensional array in python

我有两个数组:

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)

我认为您正在寻找 numpy.tensordot(),您可以在其中指定要沿哪些轴求和:

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