在Python中,可以使用math库和numpy库来检查数值是否为无穷大或NaN。
使用math库来检查数值是否为无穷大或NaN
安装完Python后,math库就已经自带了,我们可以使用math.isinf(x)和math.isnan(x)方法来检查数值是否为无穷大或NaN。
- math.isinf(x): 判断x是否为无穷大,如果是返回True,否则返回False;
- math.isnan(x): 判断x是否为NaN,如果是返回True,否则返回False。
下面是一个示例代码:
import math
# 将数值设置为正无穷大、负无穷大和NaN
pos_inf = float('inf')
neg_inf = float('-inf')
nan = float('nan')
# 检查数值是否为无穷大或NaN
print(math.isinf(pos_inf)) # True
print(math.isinf(neg_inf)) # True
print(math.isinf(nan)) # False
print(math.isnan(nan)) # True
使用numpy库来检查数值是否为无穷大或NaN
另外一个常用的库是numpy,numpy不仅支持math库的判断方式,还提供了更多的功能,比如判断一个数组中是否存在无穷大或NaN等。
numpy的isinf()和isnan()方法和math库的使用方法基本一致,但在检查是否为无穷大时,numpy会返回一整个数组,表示元素级别上的检查结果。
下面是一个示例代码:
import numpy as np
# 创建一个数组包含无穷大、负无穷大和NaN
a = np.array([1.0, np.inf, -np.inf, np.nan, 0])
print(a)
# 判断数组中的各个元素是否为无穷大或NaN
print(np.isinf(a)) # [False True True False False]
print(np.isnan(a)) # [False False False True False]
以上代码中,我们使用numpy.array()方法创建了一个包含无穷大、负无穷和NaN的数组,再使用np.isinf(a)和np.isnan(a)方法来检查数组中每个元素是否为无穷大或NaN,生成两个布尔型数组返回。