从 numpy 数组中删除 nan 值-ag捕鱼王app官网

从 numpy 数组中删除 nan 值

作者:迹忆客 最近更新:2024/03/12 浏览次数:

本文将讨论一些内置的 numpy 函数,你可以使用这些函数删除 nan 值。


在 numpy 中使用 logical_not()isnan() 方法删除 nan 值

logical_not()用于将逻辑 not 应用于数组的元素。isnan() 是一个布尔函数,用于检查元素是否为 nan。

使用 isnan() 函数,我们可以创建一个布尔数组,该数组的所有非 nan 值均具有 false,而所有 nan 值均具有 true。接下来,使用 logical_not() 函数,我们可以将 true 转换为 false,反之亦然。

最后,使用布尔索引,我们可以从原始 numpy 数组中过滤所有非 nan 值。所有以 true 作为其值的索引将用于过滤 numpy 数组。

要深入了解这些函数,请分别参考其官方文档,这里和这里。

请参考以下代码片段以获取ag捕鱼王app官网的解决方案。

import numpy as np
myarray = np.array([1, 2, 3, np.nan, np.nan, 4, 5, 6, np.nan, 7, 8, 9, np.nan])
output1 = myarray[np.logical_not(np.isnan(myarray))]  # line 1
output2 = myarray[~np.isnan(myarray)]  # line 2
print(myarray)
print(output1)
print(output2)

输出:

[ 1.  2.  3. nan nan  4.  5.  6. nan  7.  8.  9. nan]
[1. 2. 3. 4. 5. 6. 7. 8. 9.]
[1. 2. 3. 4. 5. 6. 7. 8. 9.]

line 2line 1 的简化版本。


在 numpy 中使用 isfinite() 方法删除 nan 值

顾名思义,isfinite() 函数是一个布尔函数,用于检查元素是否为有限值。它还可以检查数组中的有限值,并为该数组返回一个布尔数组。布尔数组将为所有 nan 值存储 false,为所有有限值存储 true

我们将使用此函数为目标数组检索一个布尔数组。使用布尔索引,我们将过滤所有有限值。同样,如上所述,具有 true 值的索引将用于过滤数组。

这是示例代码。

import numpy as np
myarray1 = np.array([1, 2, 3, np.nan, np.nan, 4, 5, 6, np.nan, 7, 8, 9, np.nan])
myarray2 = np.array([np.nan, np.nan, np.nan, np.nan, np.nan, np.nan])
myarray3 = np.array([1, 2, 3, 4, 5, 6, 7, 8, 9, 10])
output1 = myarray1[np.isfinite(myarray1)]
output2 = myarray2[np.isfinite(myarray2)]
output3 = myarray3[np.isfinite(myarray3)]
print(myarray1)
print(myarray2)
print(myarray3)
print(output1)
print(output2)
print(output3)

输出:

[ 1.  2.  3. nan nan  4.  5.  6. nan  7.  8.  9. nan]
[nan nan nan nan nan nan]
[ 1  2  3  4  5  6  7  8  9 10]
[1. 2. 3. 4. 5. 6. 7. 8. 9.]
[]
[ 1  2  3  4  5  6  7  8  9 10]

要了解有关此函数的更多信息,请参考官方文档


使用 math.isnan 方法删除 nan 值

除了这两个 numpy ag捕鱼王app官网的解决方案之外,还有两种其他删除 nan 值的方法。这两种方式涉及 math 库中的 isnan() 函数和 pandas 库中的 isnull 函数。这两个函数都会检查元素是否为 nan,并返回布尔值结果。

这是使用 isnan() 方法的ag捕鱼王app官网的解决方案。

import numpy as np
import math
myarray1 = np.array([1, 2, 3, np.nan, np.nan, 4, 5, 6, np.nan, 7, 8, 9, np.nan])
myarray2 = np.array([np.nan, np.nan, np.nan, np.nan, np.nan, np.nan])
myarray3 = np.array([1, 2, 3, 4, 5, 6, 7, 8, 9, 10])
booleanarray1 = [not math.isnan(number) for number in myarray1]
booleanarray2 = [not math.isnan(number) for number in myarray2]
booleanarray3 = [not math.isnan(number) for number in myarray3]
print(myarray1)
print(myarray2)
print(myarray3)
print(myarray1[booleanarray1])
print(myarray2[booleanarray2])
print(myarray3[booleanarray3])

输出:

[ 1.  2.  3. nan nan  4.  5.  6. nan  7.  8.  9. nan]
[nan nan nan nan nan nan]
[ 1  2  3  4  5  6  7  8  9 10]
[1. 2. 3. 4. 5. 6. 7. 8. 9.]
[]
[ 1  2  3  4  5  6  7  8  9 10]

使用 pandas.isnull 方法删除 nan 值

以下是使用 pandas 中的 isnull() 方法的ag捕鱼王app官网的解决方案。

import numpy as np
import pandas as pd
myarray1 = np.array([1, 2, 3, np.nan, np.nan, 4, 5, 6, np.nan, 7, 8, 9, np.nan])
myarray2 = np.array([np.nan, np.nan, np.nan, np.nan, np.nan, np.nan])
myarray3 = np.array([1, 2, 3, 4, 5, 6, 7, 8, 9, 10])
booleanarray1 = [not pd.isnull(number) for number in myarray1]
booleanarray2 = [not pd.isnull(number) for number in myarray2]
booleanarray3 = [not pd.isnull(number) for number in myarray3]
print(myarray1)
print(myarray2)
print(myarray3)
print(myarray1[booleanarray1])
print(myarray2[booleanarray2])
print(myarray3[booleanarray3])
print(myarray1[~pd.isnull(myarray1)])  # line 1
print(myarray2[~pd.isnull(myarray2)])  # line 2
print(myarray3[~pd.isnull(myarray3)])  # line 3

输出:

[ 1.  2.  3. nan nan  4.  5.  6. nan  7.  8.  9. nan]
[nan nan nan nan nan nan]
[ 1  2  3  4  5  6  7  8  9 10]
[1. 2. 3. 4. 5. 6. 7. 8. 9.]
[]
[ 1  2  3  4  5  6  7  8  9 10]
[1. 2. 3. 4. 5. 6. 7. 8. 9.]
[]
[ 1  2  3  4  5  6  7  8  9 10]

转载请发邮件至 1244347461@qq.com 进行申请,经作者同意之后,转载请以链接形式注明出处

本文地址:

相关文章

pandas read_csv()函数

发布时间:2024/04/24 浏览次数:254 分类:python

pandas read_csv()函数将指定的逗号分隔值(csv)文件读取到 dataframe 中。

pandas 追加数据到 csv 中

发布时间:2024/04/24 浏览次数:352 分类:python

本教程演示了如何在追加模式下使用 to_csv()向现有的 csv 文件添加数据。

pandas 多列合并

发布时间:2024/04/24 浏览次数:628 分类:python

本教程介绍了如何在 pandas 中使用 dataframe.merge()方法合并两个 dataframes。

pandas loc vs iloc

发布时间:2024/04/24 浏览次数:837 分类:python

本教程介绍了如何使用 python 中的 loc 和 iloc 从 pandas dataframe 中过滤数据。

扫一扫阅读全部技术教程

社交账号
  • https://www.github.com/onmpw
  • qq:1244347461

最新推荐

教程更新

热门标签

扫码一下
查看教程更方便
网站地图