numpy:如何将(N,N)和(N,N,M,M)numpy数组相乘?

时间:2019-12-03 14:12:39

标签: python arrays numpy matrix multidimensional-array

我想将两个numpy数组相乘。一个numpy数组由形状为(10,10)的矩阵给出,另一个由矩阵矩阵即形状为(10,10,256,256)的矩阵给出

我现在只想将矩阵的第二个矩阵中的每个矩阵与第一个矩阵中的对应分量相乘。例如,第二个矩阵中位置(0,0)的矩阵应乘以第一个矩阵中位置(0,0)的值。

直觉上,这并不是很复杂,但是numpy似乎不支持这一点。或者至少我不够聪明,无法使其正常工作。引发的ValueError说:

  

ValueError:操作数不能与形状(10,10)(10,10,256,256)一起广播

你们中有人可以帮助我吗?如何以一种麻木的方式实现我想要的东西。

1 个答案:

答案 0 :(得分:1)

您可以使用NumPy einsum函数,例如(在本示例中,使用零数组作为虚拟对象):

import numpy as np
x = np.zeros((10, 10))
y = np.zeros((10, 10, 256, 256))
z = np.einsum("ij,ijkm->km", x, y)
print(z.shape)
(256, 256)

有关einsum用法的详细说明,请参见here