多个 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 个数组。
使用stack
和prod
。
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)
为了简化我的问题,假设我有这些数组:
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 个数组。
使用stack
和prod
。
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)