float(nan')表示nan(不是数字)。但我该如何检查呢?
当前回答
当python<2.6时
def isNaN(x):
return str(float(x)).lower() == 'nan'
这适用于Solaris 5.9机箱上的python 2.5.1和Ubuntu 10上的python 2.6.5
其他回答
math.isnan()
或将数字与自身进行比较。NaN总是!=NaN,否则(例如,如果是数字),比较应成功。
事实上我刚碰到这个,但对我来说,它是在检查nan、-inf或inf
if float('-inf') < float(num) < float('inf'):
这对于数字是正确的,对于nan和inf都是错误的,对于字符串或其他类型(这可能是一件好事)会引发异常。此外,这不需要导入任何库,如math或numpy(numpy非常大,它的大小是任何编译应用程序的两倍)。
下面是一个答案:
符合IEEE 754标准的NaN实现例如:python的NaN:float(NaN'),numpy.NaN。。。任何其他对象:string或其他任何对象(遇到异常时不会引发异常)
按照标准实现的NaN是唯一一个与自身的不平等比较应返回True的值:
def is_nan(x):
return (x != x)
还有一些例子:
import numpy as np
values = [float('nan'), np.nan, 55, "string", lambda x : x]
for value in values:
print(f"{repr(value):<8} : {is_nan(value)}")
输出:
nan : True
nan : True
55 : False
'string' : False
<function <lambda> at 0x000000000927BF28> : False
我进入这篇文章,因为我在功能方面遇到了一些问题:
math.isnan()
运行此代码时出现问题:
a = "hello"
math.isnan(a)
它引发了异常。我的解决方案是再做一次检查:
def is_nan(x):
return isinstance(x, float) and math.isnan(x)
对于panda中的字符串,请使用pd.isnull:
if not pd.isnull(atext):
for word in nltk.word_tokenize(atext):
NLTK的特征提取功能
def act_features(atext):
features = {}
if not pd.isnull(atext):
for word in nltk.word_tokenize(atext):
if word not in default_stopwords:
features['cont({})'.format(word.lower())]=True
return features
推荐文章
- 证书验证失败:无法获得本地颁发者证书
- 当使用pip3安装包时,“Python中的ssl模块不可用”
- 无法切换Python与pyenv
- Python if not == vs if !=
- 如何从scikit-learn决策树中提取决策规则?
- 为什么在Mac OS X v10.9 (Mavericks)的终端中apt-get功能不起作用?
- 将旋转的xtick标签与各自的xtick对齐
- 为什么元组可以包含可变项?
- 如何合并字典的字典?
- 如何创建类属性?
- 不区分大小写的“in”
- 在Python中获取迭代器中的元素个数
- 解析日期字符串并更改格式
- 使用try和。Python中的if
- 如何在Python中获得所有直接子目录