python - 多个 numpy 2d 数组的元素乘法
问题描述
为了简化我的问题,假设我有这些数组:
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
,但是如果我有很多 2d 数组或者我不知道数组的数量,那将不起作用。我也知道,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)
推荐阅读
- mongodb - Kafka Connect 和 Mongo Source Connector 与管道中的查找聚合阶段
- sql - 通过滚动窗口分区计算不同的客户
- reactjs - 在 React/Redux 中获取 Dispatch 的价值
- in-app-purchase - 除了创造产品、价格和语言管理,HMS IAP PMS还能做什么?
- node.js - 这个 Node fs 写入函数中的“process.argv[2]”是什么意思?
- stata - 识别包含非整数值的变量中的观察值
- python - 用于从多个类中获取数据的序列化器
- acumatica - 如何将“未分配”文件上传到#Acumatica?
- assembly - Mips 组装:不正确的数学计算
- javascript - 有没有办法阻止元刷新自动刷新页面?