Python 中 nan 和 'nan' 的区别
Difference between nan and 'nan' in Python
我有两个列表
a = ['E300' 'E407' 'nan' 'nan' 'nan' 'nan' 'nan' 'nan' 'nan' 'nan' ]
b = [ nan nan nan nan nan nan nan nan nan nan nan nan nan]
我想从列表中删除 nan。所以我在列表 'a' 和 'b'
上使用了这个
a = [x for x in a if x != 'nan']
b = [x for x in b if x != 'nan']
所以它适用于列表 'a' 因为我认为它是将 'nan' 作为字符串而不是列表 b。我怎样才能从列表 b 中删除那些 nan。提前致谢。
不加引号时,nan
是一个数字(是用来表示不存在的结果的特殊数字,叫做"Not a Number")。它是如此特别,以至于它甚至不等于自己。使用 math.isnan
或 numpy.isnan
测试数字是否为 nan
b = [x for x in b if not math.isnan(x)]
'nan' 是一个字符串
nan 不是数字,可以通过math.isnan()
方法查看
>>> nan=float('nan')
>>> math.isnan(nan)
True
你的情况:
b = [x for x in b if not math.isnan(x)]
'nan'
是字符串,而nan
是浮点数。这很有趣,因为 "nan" 代表 Not A Number,但它确实是这样的:
>>> type(nan)
<class 'float'>
nan
有许多棘手的属性,其中最棘手的是它比较不等于 一切,包括它自己.你必须使用一个特殊的函数来检查它,math.isnan
。
>>> b
[nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan]
>>> [x for x in b if x != nan]
[nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan]
>>> [x for x in b if not math.isnan(x)]
[]
注意:Python 没有定义内置常量 nan
,即使 NaN 值的 repr
是 nan
。 (对比True
、False
、None
等)3.5及以后的有math.nan
,但之前要说float('nan')
.
我有两个列表
a = ['E300' 'E407' 'nan' 'nan' 'nan' 'nan' 'nan' 'nan' 'nan' 'nan' ]
b = [ nan nan nan nan nan nan nan nan nan nan nan nan nan]
我想从列表中删除 nan。所以我在列表 'a' 和 'b'
上使用了这个a = [x for x in a if x != 'nan']
b = [x for x in b if x != 'nan']
所以它适用于列表 'a' 因为我认为它是将 'nan' 作为字符串而不是列表 b。我怎样才能从列表 b 中删除那些 nan。提前致谢。
不加引号时,nan
是一个数字(是用来表示不存在的结果的特殊数字,叫做"Not a Number")。它是如此特别,以至于它甚至不等于自己。使用 math.isnan
或 numpy.isnan
测试数字是否为 nan
b = [x for x in b if not math.isnan(x)]
'nan' 是一个字符串
nan 不是数字,可以通过math.isnan()
>>> nan=float('nan')
>>> math.isnan(nan)
True
你的情况:
b = [x for x in b if not math.isnan(x)]
'nan'
是字符串,而nan
是浮点数。这很有趣,因为 "nan" 代表 Not A Number,但它确实是这样的:
>>> type(nan)
<class 'float'>
nan
有许多棘手的属性,其中最棘手的是它比较不等于 一切,包括它自己.你必须使用一个特殊的函数来检查它,math.isnan
。
>>> b
[nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan]
>>> [x for x in b if x != nan]
[nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan]
>>> [x for x in b if not math.isnan(x)]
[]
注意:Python 没有定义内置常量 nan
,即使 NaN 值的 repr
是 nan
。 (对比True
、False
、None
等)3.5及以后的有math.nan
,但之前要说float('nan')
.