为什么 numpy.where 在尝试在数组中查找 None 元素时“== None”和“is None”的行为不同?

edwardliang2019

我正在尝试使用 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换句话说,aisNone如果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] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

为什么`None is None is None`返回True?

Python中Pass和None有什么区别

在numpy中,[:, None]的选择有什么作用?

“ is None”和“ == None”有什么区别

使用None的NumPy数组切片

为什么在Python中“ if not someobj:”优于“ if someobj == None:”?

什么是<none>存储库和标签?为什么在使用docker build时它们会出现?

Docker中的HOST和NONE网络有什么用?

在numpy数组中查找none和nan的索引

为什么pandas.where()返回'None'

当我在列表中打印出append()函数时,为什么我的输出是None None None而不是3 3 3

在Python上使用BeautifulSoup4时,为什么当我尝试打印“ <p>”元素时,结果为'None'?

为什么当tedgecolor ='none'时edgecolor仍然存在

[...,None]在Numpy中是什么意思?

为什么这也返回None

为什么`for x in list [None:None]:`工作?

在Python中,为什么list(None)是一个错误,但[None]不是一个错误?

为什么ajax请求为dom元素的值提交“ none”?

为什么Python repl为None打印不同的东西?

为什么my_list [None:]和my_list [:None]返回my_list?

numpy `np.array()[None]` 行为

为什么在进行递归时返回 None ?

为什么它在输出中显示 None

为什么 clientIDArray 中的“None”值?

为什么 text-decoration: none 在 HTML <ins> 元素中不起作用

Python在numpy数组中找不到None

为什么我在beautifulsoup 中的find 方法在抓取coursera 网站时返回None?

为什么字典在使用函数时返回 None ,而它在 Python 中返回我想要的函数

从 numpy 数组中删除 None 的数组