python中numpy二维数组去掉NaN和inf

2024年04月28日 python中numpy二维数组去掉NaN和inf 极客笔记

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和inf值

去除NaN值

在处理二维数组时,我们通常会先处理NaN值。我们可以使用numpy库中的numpy.isnan()函数来检查每个元素是否为NaN,并将这些元素替换为特定的值(例如0)或删除这些元素。

替换NaN值

# 将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值的行或列

# 删除含有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.]]

去除inf值

除了处理NaN值外,我们还需要处理inf值。我们可以使用numpy库中的numpy.isinf()函数来检查每个元素是否为inf,并将这些元素替换为特定的值(例如0)或删除这些元素。

替换inf值

# 将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值的行或列

# 删除含有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/

展开阅读全文