多个 numpy 二维数组的逐元素乘法

Element-wise multiply of multiple numpy 2d arrays

为了简化我的问题,假设我有这些数组:

a = np.array([[1, 2, 3], [4, 5, 6]])
b = np.array([[2, 2, 2], [3, 3, 3]])
c = np.array([[1, 1, 3], [4, 1, 6]])

我想对它们使用逐元素乘法,所以结果将是:

array([[  2,   4,  18],
       [ 48,  15, 108]])

我知道我可以做到 a*b*c,但是如果我有很多二维数组或者如果我不知道数组的数量,那将不起作用。我也知道 numpy.multiply 但它仅适用于 2 个数组。

使用stackprod

stack 将创建一个可以沿轴减少 prod 的数组。

import numpy as np

a = np.array([[1, 2, 3], [4, 5, 6]])
b = np.array([[2, 2, 2], [3, 3, 3]])
c = np.array([[1, 1, 3], [4, 1, 6]])

unknown_length_list_of_arrays = [a, b, c]

d1 = a * b * c
stacked = np.stack(unknown_length_list_of_arrays)
d2 = np.prod(stacked, axis=0)

np.testing.assert_equal(d1, d2)