我在 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),因此需要進行相當多的處理。
提前交易
uj5u.com熱心網友回復:
np.where 做這件事:
np.where(Mask, Array2, 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]]])
轉載請註明出處,本文鏈接:https://www.uj5u.com/caozuo/338385.html
下一篇:Python-序列維度問題
