如何从numpy数组中删除nan值(3种方法)


您可以使用以下方法从 NumPy 数组中删除 NaN 值:

方法一:使用 isnan()

 new_data = data[~np. isnan (data)]

方法 2:使用 isfinite()

 new_data = data[np. isfinite (data)]

方法 3:使用逻辑_not()

 new_data = data[np. logical_not (np. isnan (data))]

这些方法中的每一种都会产生相同的结果,但第一种方法的输入时间最短,因此最常使用。

以下示例展示了如何在实践中使用每种方法。

示例1:使用isnan()删除NaN值

以下代码展示了如何使用isnan()函数从 NumPy 数组中删除 NaN 值:

 import numpy as np

#create array of data
data = np. array ([4, np.nan, 6, np.nan, 10, 11, 14, 19, 22])

#define new array of data with nan values removed
new_data = data[~np. isnan (data)]

#view new array
print (new_data)

[4. 6. 10. 11. 14. 19. 22.]

请注意,两个 NaN 值均已成功从 NumPy 数组中删除。

此方法仅保留所有不是 (~)NaN 值的数组元素。

示例2:使用isfinite()删除NaN值

以下代码展示了如何使用isfinite()函数从 NumPy 数组中删除 NaN 值:

 import numpy as np

#create array of data
data = np. array ([4, np.nan, 6, np.nan, 10, 11, 14, 19, 22])

#define new array of data with nan values removed
new_data = data[np. isfinite (data)]

#view new array
print (new_data)

[4. 6. 10. 11. 14. 19. 22.]

请注意,两个 NaN 值均已成功从 NumPy 数组中删除。

此方法只是保留所有有限值的数组元素。

由于 NaN 值不是有限的,因此将它们从表中删除。

示例3:使用逻辑_not()删除NaN值

以下代码展示了如何使用逻辑_not()函数从NumPy数组中删除NaN值:

 import numpy as np

#create array of data
data = np. array ([4, np.nan, 6, np.nan, 10, 11, 14, 19, 22])

#define new array of data with nan values removed
new_data = data[np. logical_not (np. isnan (data))]
#view new array
print (new_data)

[4. 6. 10. 11. 14. 19. 22.]

请注意,两个 NaN 值均已成功从 NumPy 数组中删除。

尽管此方法与前两种方法等效,但它需要更多的输入,因此不经常使用。

其他资源

以下教程解释了如何在 Python 中执行其他常见操作:

Pandas:如何用 NaN 替换空字符串
Pandas:如何用字符串替换 NaN 值

添加评论

您的电子邮箱地址不会被公开。 必填项已用*标注