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


任何编程语言最重要的方面之一是能够处理数字,包括可能为无穷大或未定义的值。在 Python 中,无穷大和 NaN(非数字)的概念非常重要,因为它们经常出现在数学计算和数据分析中。在本教程中,我们将探讨如何在 Python 中检查无穷大和 NaN 值。

Python 中的无穷大

无穷大是一个数学概念,它表示大于任何有限数的数。在 Python 中,无穷大由关键字“inf”表示。此关键字用于表示计算机内存中存储空间过大的值,例如将数字除以零或计算负数的平方根的结果。

要检查 Python 中的值是否为无穷大,可以使用 math 模块。此模块提供了一个名为“isinf”的函数,如果给定值为无穷大,则返回 True,否则返回 False。

示例

以下是示例:

Open Compiler
import math x = float('inf') print(math.isinf(x)) # True

输出

实现上述代码行后,您将获得以下输出

True

示例

请看下面的示例:

Open Compiler
import math x = float('10') print(math.isinf(x)) # False

输出

实现上述代码行后,您将获得以下输出

False

在上面的示例中,我们首先定义一个变量“x”,使用 float() 函数将其设置为无穷大值。然后,我们使用 math 模块中的“isinf”函数来检查“x”是否为无穷大。由于在第一个示例中,“x”确实是无穷大,因此该函数返回 True。而在第二个示例中,“x”不是无穷大,该函数返回 False。

示例

您还可以使用相同的“isinf”函数并传递负无穷大值来检查值是否为负无穷大:

Open Compiler
import math x = float('-inf') print(math.isinf(x)) # True

输出

实现上述代码行后,您将获得以下输出

True

在这个示例中,我们定义一个变量“x”,使用 float() 函数将其设置为负无穷大,然后将其传递给“isinf”函数。由于“x”为负无穷大,因此该函数返回 True。

Python 中的 NaN

NaN(非数字)是另一个数学概念,它表示未定义或不可表示的值。在 Python 中,NaN 由关键字“nan”表示。此关键字用于表示未定义操作的结果值,例如取负数的平方根或进行除以零的操作。

要检查 Python 中的值是否为 NaN,您可以再次使用 math 模块。此模块提供了一个名为“isnan”的函数,如果给定值为 NaN,则返回 True,否则返回 False。以下是示例:

示例

Open Compiler
import math x = float('nan') print(math.isnan(x)) # True

输出

实现上述代码行后,您将获得以下输出

True

示例

现在,请看下面的示例:

Open Compiler
import math x = float('10') print(math.isnan(x)) # False

输出

实现上述代码行后,您将获得以下输出

False

在这些示例中,我们首先定义一个变量“x”,使用 float() 函数将其设置为 NaN 值。然后,我们使用 math 模块中的“isnan”函数来检查“x”是否为 NaN。由于在第一个示例中,“x”确实是 NaN,因此该函数返回 True。而在第二个示例中,“x”不是 NaN,该函数返回 False。

示例

需要注意的是,NaN 值不等于任何其他值,包括其他 NaN 值。因此,您不能使用“==”运算符来比较 NaN 值。相反,您应该使用math.isnan函数来检查 NaN 值。

Open Compiler
import math x = float('nan') y = float('nan') print(x == y) # False print(math.isnan(x)) # True print(math.isnan(y)) # True

输出

实现上述代码行后,您将获得以下输出

False
True
True

在这个示例中,我们定义了两个变量“x”和“y”,它们都使用 float() 函数设置为 NaN 值。然后,我们使用 == 运算符来比较“x”和“y”,这返回 False,因为 NaN 值不等于任何其他值。最后,我们使用“isnan”函数来检查“x”和“y”是否都是 NaN,这对于两个变量都返回 True。

Learn Python in-depth with real-world projects through our Python certification course. Enroll and become a certified expert to boost your career.

在 NumPy 中检查无穷大和 NaN

NumPy 是 Python 中一个流行的数值计算库,它还提供用于检查无穷大和 NaN 值的函数。NumPy 模块提供两个函数:“isinf”和“isnan”。这些函数的行为与 math 模块提供的函数类似,但它们也可以处理值数组和矩阵。

示例

以下是如何使用 NumPy 的“isinf”函数来检查数组是否包含任何无穷大值的示例:

Open Compiler
import numpy as np x = np.array([1, 2, 3, np.inf]) print(np.isinf(x)) # [False False False True]

输出

实现上述代码行后,您将获得以下输出

[False False False  True]

在这个示例中,我们定义了一个数组“x”,它包含四个值,包括无穷大值。然后,我们使用 NumPy 的“isinf”函数来检查“x”中的哪些值为无穷大。该函数返回一个与“x”形状相同的布尔数组,其中 True 值表示“x”中相应的元素为无穷大。

示例

以下是如何使用 NumPy 的“isnan”函数来检查数组是否包含任何 NaN 值的示例:

Open Compiler
import numpy as np x = np.array([1, 2, np.nan, 4]) print(np.isnan(x)) # [False False True False]

输出

实现上述代码行后,您将获得以下输出:

[False False  True False]

在这个示例中,我们定义了一个数组“x”,它包含四个值,包括 NaN 值。然后,我们使用 NumPy 的“isnan”函数来检查“x”中的哪些值为 NaN。该函数返回一个与“x”形状相同的布尔数组,其中 True 值表示“x”中相应的元素为 NaN。

在 Pandas 中检查无穷大和 NaN

Pandas 是 Python 中一个流行的数据操作库,它提供多个用于处理数据框和序列的函数。Pandas 还提供用于检查数据框和序列中无穷大和 NaN 值的函数。

示例

以下是如何在 Pandas 中检查无穷大和 NaN 值的一些示例:

Open Compiler
import pandas as pd import numpy as np # Create a dataframe df = pd.DataFrame({ 'A': [1, 2, 3, np.inf], 'B': [4, 5, 6, np.nan], 'C': [7, 8, np.nan, 9] }) # Check for infinity values inf_mask = df.isin([np.inf, -np.inf]) print(inf_mask) # Check for NaN values nan_mask = df.isna() print(nan_mask)

输出

实现上述代码行后,您将获得以下输出

	  A      B      C
0  False  False  False
1  False  False  False
2  False  False  False
3   True  False  False
       A      B      C
0  False  False  False
1  False  False  False
2  False  False   True
3  False   True  False

在这个示例中,我们创建了一个数据框“df”,它包含几列具有不同类型的值,包括无穷大和 NaN 值。然后,我们使用“isin”函数来检查无穷大值,并使用“isna”函数来检查 NaN 值。

“isin”函数返回一个与“df”形状相同的布尔数据框,其中 True 值表示“df”中相应的元素为无穷大或负无穷大。

“isna”函数返回一个与“df”形状相同的布尔数据框,其中 True 值表示“df”中相应的元素为 NaN。

处理无穷大和 NaN 值

在处理 Python 中的无穷大和 NaN 值时,务必考虑它们将如何影响正在执行的计算或分析。在许多情况下,这些值会导致意外结果或错误,因此务必适当地处理它们。

例如,如果您正在执行涉及除以可能为零的变量的数学计算,则应检查此条件并适当地处理它。这是一个示例

示例

x = 1 y = 0 if y == 0: result = float('inf') else: result = x / y

在这个示例中,我们定义了两个变量“x”和“y”,并在它们之间执行除法运算。由于“y”可能为零,因此我们检查此条件并通过在“y”为零时将结果设置为无穷大来适当地处理它。

同样,如果您正在执行涉及 NaN 值的数据分析,则应考虑这些值将如何影响您的结果。例如,如果您正在计算可能包含 NaN 值的一组值的平均值或标准差,则应使用能够适当地处理这些值的函数。

示例

以下是如何计算可能包含 NaN 值的一组值的平均值的示例:

Open Compiler
import numpy as np x = np.array([1, 2, np.nan, 4]) mean = np.nanmean(x) print(mean)

输出

实现上述代码行后,您将获得以下输出

2.3333333333333335

在这个示例中,我们定义了一个数组“x”,它包含四个值,包括 NaN 值。然后,我们使用 NumPy 的“nanmean”函数来计算“x”中值的平均值,不包括任何 NaN 值。该函数将平均值返回为浮点数。

结论

了解如何在 Python 中检查无穷大和 NaN 值对于任何使用数值数据的开发人员或数据分析人员来说都是一项重要的技能。这些值可能出现在各种数学计算和数据分析任务中,并且必须适当地处理它们以避免意外结果或错误。

通过使用 Python 提供的内置函数和模块,开发人员和数据分析人员可以有效地处理这些值,并确保其计算和分析的准确性。

更新于:2024年2月20日

浏览量 508 次

开启你的职业生涯

完成课程,获得认证

开始学习
广告