簡體   English   中英

從numpy數組中提取滿足條件的值

[英]Extract values that satisfy a condition from numpy array

說我有以下數組:

a = np.array([1,1,1,2,2,2])
b = np.array([4,6,1,8,2,1])

是否可以執行以下操作:

a[np.where(b>3)[0]]
#array([1, 1, 2])

因此,根據滿足b條件的索引從a選擇值,但只能使用np.where或類似的numpy函數?

換句話說,可以使用np.where僅指定條件為True時要從中獲取值的數組嗎? 還是有另一個numpy函數可以一步完成?

是的,有一個功能: numpy.extract(condition, array)返回從所有數值array那satifsy的條件。

np.where或布爾索引np.where ,使用此功能並沒有太多好處。 所有這些方法都會創建一個臨時的布爾數組,該數組存儲b>3的結果。 np.where創建一個附加的索引數組,而a[b>3]np.extract直接使用布爾數組。

就個人而言,我會使用a[b>3]因為這是最有趣的形式。

只需使用布爾索引。

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

b > 3將為您提供array([True, True, False, True, False, False])並使用a[b > 3]從索引數組為True a中選擇所有元素。

讓我們使用列表理解來解決這個問題-

a = np.array([1,1,1,2,2,2])
b = np.array([4,6,1,8,2,1])
indices = [i for i in range(len(b)) if b[i]>3]  # Returns indexes of b where b > 3 - [0, 1, 3]
a[indices]
    array([1, 1, 2])

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

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