【问题标题】:Multiplying multidimensional array in python在python中乘以多维数组
【发布时间】: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 个维度设为不同,则歧义会减少。我认为您不需要squeezeA[:,j:] 将是 2d。
  • np.einsum('kl,lmn->kmn', B, A) 应该可以工作;但您的迭代解决方案意味着“mkn”顺序。

标签: numpy python-3.5


【解决方案1】:

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

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

【讨论】:

    猜你喜欢
    • 2022-07-12
    • 1970-01-01
    • 2014-08-20
    • 2015-12-17
    • 1970-01-01
    • 2013-06-05
    • 1970-01-01
    • 2016-04-15
    相关资源
    最近更新 更多