Python中numpy二维数组去掉nan和inf
在进行数据处理和分析时,常常会遇到数据集中存在缺失值(NaN)或者无穷大(Inf)的情况。对于这些异常值的处理是至关重要的,以保证数据分析的准确性和稳定性。在Python中,使用NumPy这个强大的科学计算库,可以方便地对二维数组中的NaN和Inf进行处理。
本文将详细介绍如何使用NumPy库中的函数来去除二维数组中的NaN和Inf元素,让数据变得更加干净和可靠。
1. 创建包含NaN和Inf的二维数组
首先,让我们创建一个包含NaN和Inf的二维数组,以便进行后续的演示和操作。可以使用NumPy的
“`np.array()“`函数来创建一个二维数组,并手动插入NaN和Inf。
import numpy as np
# 创建包含NaN和Inf的二维数组
arr = np.array([[1, 2, np.nan],
[4, np.inf, 6],
[7, 8, np.nan],
[10, 11, np.inf]])
print("原始二维数组:")
print(arr)
运行以上代码,我们可以得到原始的二维数组,包含了NaN和Inf的元素:
原始二维数组:
[[ 1. 2. nan]
[ 4. inf 6.]
[ 7. 8. nan]
[10. 11. inf]]
2. 去除NaN和Inf元素
在NumPy中,可以使用
“`np.isnan()“`和“`np.isinf()“`函数来判断一个数组中的元素是否为NaN或Inf。结合NumPy的逻辑判断方式,我们可以筛选出不包含NaN和Inf的元素,从而实现去除NaN和Inf的目的。
# 去除NaN元素
arr = arr[~np.isnan(arr)]
# 去除Inf元素
arr = arr[~np.isinf(arr)]
# 将处理后的一维数组重新变形为二维数组
arr = arr.reshape(-1, 3)
print("\n去除NaN和Inf后的二维数组:")
print(arr)
运行以上代码,可以得到去除NaN和Inf元素后的二维数组:
去除NaN和Inf后的二维数组:
[[ 1. 2. 6.]
[ 7. 8. 10.]
[11.]]
3. 完整示例代码
下面是完整的示例代码,包括了创建含有NaN和Inf的二维数组以及去除NaN和Inf的操作:
import numpy as np
# 创建包含NaN和Inf的二维数组
arr = np.array([[1, 2, np.nan],
[4, np.inf, 6],
[7, 8, np.nan],
[10, 11, np.inf]])
print("原始二维数组:")
print(arr)
# 去除NaN元素
arr = arr[~np.isnan(arr)]
# 去除Inf元素
arr = arr[~np.isinf(arr)]
# 将处理后的一维数组重新变形为二维数组
arr = arr.reshape(-1, 3)
print("\n去除NaN和Inf后的二维数组:")
print(arr)
4. 总结
通过本文的介绍,我们了解了如何在Python中使用NumPy库对二维数组中的NaN和Inf进行处理。通过这些操作,我们可以更好地清洗数据,使得数据集更加干净和可靠,从而为后续的数据分析和建模提供更好的基础。