Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/363.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 当存在nan值时,为什么此列表与数组求值返回false?_Python_Numpy - Fatal编程技术网

Python 当存在nan值时,为什么此列表与数组求值返回false?

Python 当存在nan值时,为什么此列表与数组求值返回false?,python,numpy,Python,Numpy,考虑一下这个简单的评估: import numpy as np aa = np.array([[np.nan, np.nan], [1.64, 0.0784]]) bb = [[np.nan, np.nan], [1.64, 0.0784]] np.all(aa == bb) 这将返回False,即使aa数组等于bb列表。如果我对aa,bb中的每个元素尝试此操作,我会得到: np.all(aa[0] == bb[0]) False np.all(aa[1] == bb[1]) True

考虑一下这个简单的评估:

import numpy as np

aa = np.array([[np.nan, np.nan], [1.64, 0.0784]]) 
bb = [[np.nan, np.nan], [1.64, 0.0784]]

np.all(aa == bb)
这将返回
False
,即使
aa
数组等于
bb
列表。如果我对
aa,bb中的每个元素尝试此操作,我会得到:

np.all(aa[0] == bb[0])
False
np.all(aa[1] == bb[1])
True

这意味着这里的问题是
nan
值。为什么会发生这种情况?

根据定义,
nan
与任何东西(使用内置操作数)相比,都返回
False
。特别是,
np.nan==np.nan
返回
False

但是,请注意,
=
被定义为
==
的否定,因此我们得到:

>>> import numpy as np
>>> np.nan == np.nan
False
>>> np.nan != np.nan
True
您可以直接使用

>>> np.isnan(np.nan)
True

根据定义,
nan
与任何东西相比(使用内置操作数)返回
False
。特别是,
np.nan==np.nan
返回
False

但是,请注意,
=
被定义为
==
的否定,因此我们得到:

>>> import numpy as np
>>> np.nan == np.nan
False
>>> np.nan != np.nan
True
您可以直接使用

>>> np.isnan(np.nan)
True
原因:原因: