[英]Efficiently combining two numpy arrays without adding
我目前有兩個等效長度的大型 numpy 數組。 第一個數組填充了 5 個一組的值,這些值要么是一組 5 個浮點值,要么是 5 個 0,如下所示:
[ [.03, 5, .1, 0.23, 5], [.1, .6, .8, 4.3], [0,0,0,0,0] ... ]
第二個數組以相同的方式填充值。 我需要組合兩個數組,以便在 array_two 設置非零值的任何位置,array_one 中的相應位置需要設置為該值。 如果 array_one 已經有一個值,那么它應該保持不變。 這有點難聽,所以這里是我試圖解釋應該發生的事情的一個例子。
Array one: [ [.03, 5, .1, 0.23, 5], [0,0,0,0,0], [.1, .6, .8, 4.3, .2], [0,0,0,0,0],
[0,0,0,0,0] ... ]
Array two: [ [0,0,0,0,0], [0,0,0,0,0], [.1, .6, .8, 4.3], [0,0,0,0,0],
[32 ,2 , 4.6 , 3.4 , 0.2] ... ]
結果數組應該是:
[ [.03, 5, .1, 0.23, 5], [0,0,0,0,0], [.1, .6, .8, 4.3, .2], [0,0,0,0,0],
[32 ,2 , 4.6 , 3.4 , 0.2] ... ]
本質上,新數組從位置5
處的array_two
獲取值。 這不能用總和來完成,因為這會使位置 3 是應該的兩倍。
numpy.where
是針對這樣的情況:
import numpy as np
wh = (a != 0).any(1, keepdim=True)
# or for numpy version < 1.7
wh = (a != 0).any(1)[:, np.newaxis]
c = np.where(wh, a, b)
在你的情況下numpy.maximum
也可能工作。
c = np.maximum(a, b)
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.