- 在 Python 中判断一个浮点数是否为 NaN
float("inf") # 正无穷
float("-inf") # 负无穷
inf = float("inf")
ninf = float("-inf")
nan = float("nan")
方法一
import math
math.isinf(inf)
math.isinf(ninf)
math.isnan(nan) # 总算可以判断了
方法二
>>> def isnan(num):
... return num != num
...
>>> isnan(float("nan"))
True
方法三:
>>> import numpy as np
>>> np.isnan(np.nan)
True
>>> np.isnan(float("nan"))
True
>>> np.isnan(float("inf"))
False
Numpy 的 isnan 函数还可以对整个 list 进行判断:
>>> lst = [1, float("nan"), 2, 3, np.nan, float("-inf"), 4, np.nan]
>>> lst
[1, nan, 2, 3, nan, -inf, 4, nan]
>>> np.isnan(lst)
array([False, True, False, False, True, False, False, True], dtype=bool)