2024年04月28日 python中numpy二维数组去掉NaN和inf 极客笔记
在使用Python进行数据分析和处理过程中,经常会遇到处理NaN(缺失值)和inf(无穷大)的情况。对于一维数组,我们可以使用numpy
库中的numpy.isnan()
和numpy.isinf()
函数来去除这些值。但是,对于二维数组,我们需要稍微复杂的操作才能达到去除NaN和inf的目的。
本文将介绍在Python中使用numpy
库处理二维数组中的NaN和inf值的方法,并给出一些示例代码以帮助读者更好地理解和应用这些方法。
在进行示例代码之前,我们首先需要导入numpy
库,并创建一个包含NaN和inf值的二维数组,以展示如何去除这些值。
import numpy as np
# 创建包含NaN和inf值的二维数组
data = np.array([[1, 2, np.nan],
[4, np.inf, 6],
[7, 8, 9]])
print("原始二维数组:")
print(data)
运行以上代码,我们将得到原始的二维数组如下所示:
原始二维数组:
[[ 1. 2. nan]
[ 4. inf 6.]
[ 7. 8. 9.]]
在处理二维数组时,我们通常会先处理NaN值。我们可以使用numpy
库中的numpy.isnan()
函数来检查每个元素是否为NaN,并将这些元素替换为特定的值(例如0)或删除这些元素。
# 将NaN值替换为0
data[np.isnan(data)] = 0
print("去除NaN后的二维数组(替换NaN为0):")
print(data)
运行以上代码,我们将得到去除NaN值后的二维数组如下所示:
去除NaN后的二维数组(替换NaN为0):
[[1. 2. 0.]
[4. inf 6.]
[7. 8. 9.]]
# 删除含有NaN值的行或列
data_cleaned = data[~np.isnan(data).any(axis=1)]
print("去除NaN后的二维数组(删除含有NaN值的行):")
print(data_cleaned)
运行以上代码,我们将得到删除含有NaN值后的二维数组如下所示:
去除NaN后的二维数组(删除含有NaN值的行):
[[1. 2. 0.]
[7. 8. 9.]]
除了处理NaN值外,我们还需要处理inf值。我们可以使用numpy
库中的numpy.isinf()
函数来检查每个元素是否为inf,并将这些元素替换为特定的值(例如0)或删除这些元素。
# 将inf值替换为0
data[np.isinf(data)] = 0
print("去除inf后的二维数组(替换inf为0):")
print(data)
运行以上代码,我们将得到去除inf值后的二维数组如下所示:
去除inf后的二维数组(替换inf为0):
[[1. 2. 0.]
[4. 0. 6.]
[7. 8. 9.]]
# 删除含有inf值的行或列
data_cleaned = data[~np.isinf(data).any(axis=1)]
print("去除inf后的二维数组(删除含有inf值的行):")
print(data_cleaned)
运行以上代码,我们将得到删除含有inf值后的二维数组如下所示:
去除inf后的二维数组(删除含有inf值的行):
[[1. 2. 0.]
[7. 8. 9.]]
在Python中使用numpy
库处理二维数组中的NaN和inf值是一项常见任务。通过本文介绍的方法,我们可以轻松地去除这些问题值,使得数据分析和处理更加顺利和有效。
本文链接:http://so.lmcjl.com/news/3275/