📜  从 np 数组中删除 nana - Python (1)

📅  最后修改于: 2023-12-03 15:06:31.945000             🧑  作者: Mango

从 np 数组中删除 nan - Python

在处理 Python 中的数值数据时,我们时常需要使用 NumPy 库中的数组。不过,由于 NaN(not a number)的存在,有时可能会影响我们的数据处理。因此,本文将介绍如何从 NumPy 数组中删除 NaN 数据。

方法

NumPy 提供了很多方法删除 NaN 数据。以下为常用的两个方法:

1. 使用 numpy.isnan() 函数

此方法将会将 nan 变为 True,将非 nan 变为 False。

import numpy as np

a = np.array([1, 2, np.nan, 4, 5])
print(np.isnan(a))  # [False False  True False False]

2. 使用 numpy.nan_to_num() 函数

此方法将会将 nan 变为 0 ,将 inf 和 -inf 变为极大值和极小值。

import numpy as np

a = np.array([1, 2, np.nan, 4, 5])
print(np.nan_to_num(a))  # [1. 2. 0. 4. 5.]
删除 NaN 数据

删除 NaN 数据时,我们可以使用以下两个方法:

1. 使用 numpy.delete 函数

此方法可以删除指定位置的元素。

import numpy as np

a = np.array([1, 2, np.nan, 4, 5])
non_nan_idx = ~np.isnan(a)  # 获取非 nan 值的索引
a = np.delete(a, np.argwhere(~non_nan_idx))  # 使用索引删除
print(a)  # [1. 2. 4. 5.]

2. 使用 numpy.compress 函数

此方法将会返回数组中索引值对应的元素。

import numpy as np

a = np.array([1, 2, np.nan, 4, 5])
non_nan_idx = ~np.isnan(a)  # 获取非 nan 值的索引
a = np.compress(non_nan_idx, a)  # 使用索引获取非 nan 值
print(a)  # [1. 2. 4. 5.]
结论

本文介绍了如何从 NumPy 数组中删除 NaN 数据,以便更好地处理数据。通过学习以上方法,我们可以更有效地控制数据的质量,进而提高数据分析的准确度。