簡體   English   中英

為什么 numpy.where 在嘗試在數組中查找 None 元素時“== None”和“is None”的行為不同?

[英]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 換句話說, aNone ,如果a本身是None 因此, a is None在這里返回False因為a不為空。 現在, np.where(a is None)相當於np.where(False) ,它是空的,因此它的第一個元素也是空的,返回[]

在另一方面a == None的檢查元件aNone和將返回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.

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