【发布时间】:2021-10-25 16:38:54
【问题描述】:
我在 Python 3.9 中有三个多维数组,我想在第三个条件下用第二个数组的值替换一个数组的值。所以:
Array1 = [[[4, 2, 3], [1, 0, 10], [7, 4, 6]],
[[8, 7, 95], [3, 5, 22], [0, 7, 0]],
[[5, 0, 60], [5, 230, 70], [6, 76, 30]]]
Array2 = [[[12, 3, 4], [4, 55, 0], [0, 5, 76]],
[[34, 60, 76], [40, 430, 0], [4, 0, 11]],
[[2, 34, 0], [1, 0, 0], [76, 4, 77]]]
Mask = [[[0, 1, 0], [1, 0, 0], [1, 0, 0]],
[[0, 1, 0], [0, 1, 1], [1, 1, 1]],
[[1, 0, 1], [1, 0, 0], [1, 1, 0]]]
我想用第二个数组的值替换第一个数组中的值,如果在掩码数组中的相同位置,值为1。所以结果应该是:
Array1 = array([[[ 4, 3, 3],
[ 4, 0, 10],
[ 0, 4, 6]],
[[ 8, 60, 95],
[ 3, 430, 0],
[ 4, 0, 11]],
[[ 2, 0, 0],
[ 1, 230, 70],
[ 76, 4, 30]]])
有什么方法可以使用不需要我遍历整个数组的快速(numpy)命令吗?实际上,整个数组的大小为 (1500,2500,4),因此需要进行相当多的处理。
提前发送
【问题讨论】:
-
三个列表的长度是否总是相同的?
-
是的,它们的长度完全相同。标记答案解决了我的问题。不过还是谢谢。
标签: python python-3.x numpy