如何在Windows上使用Python 2.5创建Nan?
float('nan')
因错误ValueError: invalid literal for float(): nan
答案摘要:float('inf')
和float('nan')
都不适用于Python 2.5和Windows。这是在Python 2.6中修复的错误。
如果您使用numpy,则可以使用numpy.inf
和numpy.nan
。
如果您需要一个没有numpy的解决方法,那么您可以使用溢出的表达式(如1e1000
)来获取inf,使用1e1000 / 1e1000
或1e1000 - 1e1000
来获取nan。
答案 0 :(得分:3)
另一种方法是将inf
单独划分:
>>> float('inf') / float('inf')
nan
或者以一种更加模糊的方式,这可能不适用于跨平台(但在Windows 2.5中的Python 2.5中的特定错误):
>>> 1e31337 / 1e31337
nan
>>> 1e31337 - 1e31337
nan
答案 1 :(得分:1)
这个问题已经有了一个公认的答案,但我认为如果你不想依赖溢出并且已经安装了numpy,那么以下内容应该可行...(未经测试,因为我没有没有python2.5或windows)
>>> import numpy as np
>>> np.nan
nan
>>> np.inf
inf
答案 2 :(得分:0)
尽可能升级您的Python发行版。 The behavior you listed is considered a bug.(注意:Cython链接。)
通常,Python应该以跨平台的方式支持nan
的这个定义。此行为似乎已在Python 2.6和3.0中得到修复。
当然,这适用于Linux的Linux版本:
$ python2.4
Python 2.4.3 (#1, Sep 21 2011, 19:55:41)
[GCC 4.1.2 20080704 (Red Hat 4.1.2-51)] on linux2
Type "help", "copyright", "credits" or "license" for more information.
>>> float('nan')
nan
$ python2.5
Python 2.5.2 (r252:60911, Jun 26 2008, 10:20:40)
[GCC 4.1.2 20070626 (Red Hat 4.1.2-14)] on linux2
Type "help", "copyright", "credits" or "license" for more information.
>>> float('nan')
nan