在Python中检查数值是否为无穷大或NaN

  • Post category:Python

在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,生成两个布尔型数组返回。