python nan和inf值

是否有可能在Python中将数组元素设置为NaN

另外,是否可以将variables设置为+/-无穷大? 如果是这样,有没有什么function来检查一个数字是否是无穷的?

使用float()从string中投射:

 >>> float('NaN') nan >>> float('Inf') inf >>> -float('Inf') -inf >>> float('Inf') == float('Inf') True >>> float('Inf') == 1 False 

是的,你可以使用numpy

 import numpy as np a = arange(3,dtype=float) a[0] = np.nan a[1] = np.inf a[2] = -np.inf a # is now [nan,inf,-inf] np.isnan(a[0]) # True np.isinf(a[1]) # True np.isinf(a[2]) # True 

是否有可能在Python中将数组元素设置为NaN?

是的,你总是可以包含一个NaNinf在python list (和类似的)。 但是,如果你想包含它在一个array (例如array.arraynumpy.array ),那么数组的types必须floatcomplex

 >>> import math >>> import numpy as np >>> arr = np.ones(1, float) # float array >>> arr[0] = math.nan >>> arr array([ nan]) >>> [math.nan, math.inf, -math.inf] # python list [nan, inf, -inf] 

math模块包含naninf常量(自Python 3.5以来)以及一些函数(从Python 2.6开始可用)来检查这些:

math.isnan检查值是否为nan

 >>> math.isnan(math.nan) # nan True 

math.isinf检查值是无穷大(正值还是负值):

 >>> math.isinf(math.inf) # positive infinity True >>> math.isinf(-math.inf) # negative infinity True 

还有一个函数,可以检查一个数字是不是 infnanmath.isfinite (适用于Python 3.2+)

 >>> math.isfinite(math.inf) False >>> math.isfinite(math.nan) False >>> math.isfinite(11.2) True 

当使用Python 2.4时,请尝试

 inf = float("9e999") nan = inf - inf 

当我将simplejson移植到运行Python 2.4的embedded式设备时,我遇到了这个问题, float("9e999")修复了这个问题。 不要使用inf = 9e999 ,你需要从string转换它。 -inf给出了-Infinity