微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

多个numpy 2d数组的元素乘法

如何解决多个numpy 2d数组的元素乘法

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

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

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

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

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

解决方法

使用 stackprod

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

import numpy as np

a = np.array([[1,2,3],[4,5,6]])
b = np.array([[2,2],[3,3,3]])
c = np.array([[1,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)

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。