Python 多维数组matmul

Python multiple dimension array matmul

我有两个 3 维 NumPy 数组 (10,360,90)。我想在两个数组之间进行矩阵乘法。

我想知道如何将最后两个维度 (360, 90) 视为单个元素来进行矩阵乘法。即如图所示,在(360, 90)个数组之间做一个np.maltiply,生成最终矩阵为(10, 10, 360, 90).

two 3 dimension arrays

这个问题可以用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),如您所说定义。