[英]Why does numpy.where behave differently for “== None” and “is None” when trying to find None elements in array?
我正在嘗試使用 np.where 查找數組中的所有 None 元素。 這是我的代碼:
a = np.array([None, 1, 2, None, 3])
print(np.where(a is None)[0])
print(np.where(a == None)[0])
奇怪的是,使用“a is None”返回一個空數組,而使用“a==None”返回正確的結果。 我想知道為什么會這樣? 謝謝!
更新:如果 a 是一個 python 列表,則兩者的行為相同並返回 []。 只有在將 a 轉換為 ndarray 時才會發生差異。
a is None
檢查是否a
本身是None
,並且不檢查的元素a
反對None
。 換句話說, a
是None
,如果a
本身是None
。 因此, a is None
在這里返回False
因為a
不為空。 現在, np.where(a is None)
相當於np.where(False)
,它是空的,因此它的第一個元素也是空的,返回[]
。
在另一方面a == None
的檢查元件a
對None
和將返回array([ True, False, False, True, False])
其結果在你看到的輸出。
簡而言之:
a is None
#False
a == None
#array([ True, False, False, True, False])
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.