1、inf
python中的正无穷或负无穷,使用float("inf")或float("-inf")来表示。
这里有点特殊,写成:float("inf"),float("INF")或者float('Inf')都是可以的。
当涉及 > 和 < 比较时,所有数都比无穷小float("-inf")大,所有数都比无穷大float("inf")小。
相等比较时,float("+inf")与float("+inf")、float("inf")三者相等
无穷的一些类似加减乘除的简单操作还是得到无穷;
2、Nan
0 * float('inf') 结果为:nan
float('inf') / float('inf') 结果为:nan
float('inf') - float('inf') 结果为:nan
float('-inf') - float('-inf') 结果也为:nan
nan代表Not A Number(不是一个数),它并不等于0
因为nan不是一个数,所以相关计算都无法得到数字。
所有涉及nan的操作,返回的都是nan。
a = float("inf")
b = float("inf")
c = a*0 # get Nan
d = b*0 # get Nan
print(a is b)
print(c is d)
False
False
a = float("inf")
b = float("inf")
c = a*0 # get Nan
d = b*0 # get Nan
print(a == b)
print(c == d)
print(c != d)
print(math.isinf(a))
print(math.isnan(c))
True
False
True
True
True
3、None 与 Nan
In [8]: None == None
Out[8]: True
In [4]: np.nan == np.nan
Out[4]: False
In [5]: type(np.nan)
Out[5]: float
In [6]: type(None)
Out[6]: NoneType
4、处理Nan的几种情况
加法,忽略Nan
In [7]: np.nansum([11,np.nan,123])
Out[7]: 134.0
统计Nan的个数,利用Nan本身不等于本身
In [9]: a = np.array([1,2,3,4,np.nan,5,np.nan,np.nan])
In [10]: a
Out[10]: array([ 1., 2., 3., 4., nan, 5., nan, nan])
In [11]: np.count_nonzero(a != a)
Out[11]: 3