【发布时间】:2020-11-29 09:14:46
【问题描述】:
假设我有一个 3d 数组 A 和一个 2d 数组 B。A 的维度为 (s,m,m),而 B 的维度为 (m,s)。
我想为具有维度 (m,s) 的二维数组 C 编写代码,使得 C[:,i] = A[i,:,:] @ B[:,i]。
有没有一种方法可以优雅地做到这一点,而无需在 numpy 中使用 for 循环?
我想到的一个解决方案是将 B 重塑为维度为 (m,s,1) 的 3d 数组,通过 A@B 将 A 和 B 相乘,然后将生成的 3d 数组重塑为 2d 数组。这听起来有点乏味,想知道是否可以在这里应用tensordot或einsum。
建议表示赞赏。谢谢!
【问题讨论】: