簡體   English   中英

有效地組合兩個 numpy 數組而不添加

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM