在python中使用not equal和nan

时间:2015-11-14 01:17:52

标签: python numpy import

我有奇怪的问题。我有以下代码

if Group[NN1,8] != 'nan' :
    print("Group[NN1,8]",Group[NN1,8])

Group [NN1,8]的值是nan,因此我希望print命令不会执行。但是我的代码会执行。 结果是

`('Group[NN1,8]', nan)`.

无需打印。有什么不对吗?

3 个答案:

答案 0 :(得分:4)

看起来你正在比较一个浮点数和一个永远不相等的字符串。

>>> float('nan')
nan

>>> 'nan'
'nan'

>>> float('nan') == 'nan'
False

nan的特殊情况下,它甚至不等于“本身”:

>>> x = float('nan')
>>> x == x
False

您可以改用:

>>> import math
>>> math.isnan(x)
True

答案 1 :(得分:1)

不是数字不等于任何值,包括nan。您需要使用!math.isnan().

>>> x = float('nan')
>>> x == x
False
>>> math.isnan(x)
True

答案 2 :(得分:1)

如果使用numpy,则还可以使用:

np.invert(np.isnan(ds_cor_y))

它的工作方式类似于isnotnan(),因此如果其值为nan,则返回TRUE。