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?
是的,你总是可以包含一个NaN或inf在python list (和类似的)。 但是,如果你想包含它在一个array (例如array.array或numpy.array ),那么数组的types必须是float或complex !
>>> 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模块包含nan和inf常量(自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
还有一个函数,可以检查一个数字是不是 inf或nan : math.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 。