簡體   English   中英

與numpy.where()一起使用'in'的替代方法

[英]Alternative to using 'in' with numpy.where()

可以說我有一個帶有兩列的數組'foo'。 列0的值1到12表示月份。 第1列具有相應的測量值。 如果我想創建一個從12月,1月和2月(12,1,2)開始的測量值掩碼,我懷疑我可以:

numpy.where(foo[:,1] in (12, 1, 2), False, True)

但是,看來我聰明的“ in(12,1,2)”不能作為where()的條件。 它似乎也無法像[12,1,2]等工作。

還有另一種聰明的方法嗎? 我是否有更好的方法將所有(12、1、2)測量值收集到一個數組中? 什么是麻木的方式?

(因為對每個月的測量數量有不規律的限制,所以不希望對陣列進行重塑)

我認為'in(12,1,2)'不起作用的原因是,'in'之前的元素必須是單個元素。

但是為此,numpy具有函數in1ddocumentation )對numpy數組執行“ in”操作。 使用您的代碼:

np.where(np.in1d(foo[:,0], [12, 1, 2]), False, True)

要用注釋完成答案:在這種情況下,使用where是多余的, in1d的輸出可用於索引foo:

foo[np.in1d(foo[:,0], [12, 1, 2])]

foo[~np.in1d(foo[:,0], [12, 1, 2])]

注意: in1d僅在numpy 1.4或更高版本中可用。

暫無
暫無

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

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