【发布时间】:2021-04-15 14:22:49
【问题描述】:
我有两个 3 维 NumPy 数组 (10,360,90)。我想在两个数组之间进行矩阵乘法。
我想知道如何将最后两个维度 (360, 90) 视为单个元素来进行矩阵乘法。即如图所示,在(360, 90)个数组之间做一个np.maltiply,生成最终的矩阵为(10, 10, 360, 90)。
【问题讨论】:
标签: python arrays matrix-multiplication
我有两个 3 维 NumPy 数组 (10,360,90)。我想在两个数组之间进行矩阵乘法。
我想知道如何将最后两个维度 (360, 90) 视为单个元素来进行矩阵乘法。即如图所示,在(360, 90)个数组之间做一个np.maltiply,生成最终的矩阵为(10, 10, 360, 90)。
【问题讨论】:
标签: python arrays matrix-multiplication
这个问题可以用numpy.einsum解决如下:
import numpy as np
a = np.random.rand(10,360,90) # first array you want to multiply
b = np.random.rand(10,360,90) # second array you want to multiply
c = np.einsum('ikl, jkl-> ijkl', a, b) # output array
c 将是您的最终矩阵,其形状为 (10, 10, 360, 90),如您所说。
【讨论】: