在Windows上使用Python 2.5的Nan

时间:2012-03-28 21:30:37

标签: python windows nan python-2.5

如何在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.infnumpy.nan

如果您需要一个没有numpy的解决方法,那么您可以使用溢出的表达式(如1e1000)来获取inf,使用1e1000 / 1e10001e1000 - 1e1000来获取nan。

3 个答案:

答案 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中得到修复。

Additional reading


当然,这适用于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