[英]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具有函數in1d
( documentation )對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.