📅  最后修改于: 2023-12-03 15:06:31.945000             🧑  作者: Mango
在处理 Python 中的数值数据时,我们时常需要使用 NumPy 库中的数组。不过,由于 NaN(not a number)的存在,有时可能会影响我们的数据处理。因此,本文将介绍如何从 NumPy 数组中删除 NaN 数据。
NumPy 提供了很多方法删除 NaN 数据。以下为常用的两个方法:
此方法将会将 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]
此方法将会将 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 数据时,我们可以使用以下两个方法:
此方法可以删除指定位置的元素。
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.]
此方法将会返回数组中索引值对应的元素。
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 数据,以便更好地处理数据。通过学习以上方法,我们可以更有效地控制数据的质量,进而提高数据分析的准确度。