我正在尝试使用 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
isNone
如果a
它本身是None
。所以,a is None
返回False
这里因为a
不是空的。现在,np.where(a is None)
相当于np.where(False)
which 是空的,因此它的第一个元素也是空的,返回[]
.
另一方面,a == None
检查a
反对的元素None
并将返回array([ True, False, False, True, False])
结果您看到的输出。
简而言之:
a is None
#False
a == None
#array([ True, False, False, True, False])
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句