从 numpy 数组中删除 nan 值
本文将讨论一些内置的 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 2
是 line 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 dataframe dataframe.shift() 函数
发布时间:2024/04/24 浏览次数:133 分类:python
-
dataframe.shift() 函数是将 dataframe 的索引按指定的周期数进行移位。
python pandas.pivot_table() 函数
发布时间:2024/04/24 浏览次数:82 分类:python
-
python pandas pivot_table()函数通过对数据进行汇总,避免了数据的重复。
pandas read_csv()函数
发布时间:2024/04/24 浏览次数:254 分类:python
-
pandas read_csv()函数将指定的逗号分隔值(csv)文件读取到 dataframe 中。
pandas 多列合并
发布时间:2024/04/24 浏览次数:628 分类:python
-
本教程介绍了如何在 pandas 中使用 dataframe.merge()方法合并两个 dataframes。
pandas loc vs iloc
发布时间:2024/04/24 浏览次数:837 分类:python
-
本教程介绍了如何使用 python 中的 loc 和 iloc 从 pandas dataframe 中过滤数据。
在 python 中将 pandas 系列的日期时间转换为字符串
发布时间:2024/04/24 浏览次数:894 分类:python
-
了解如何在 python 中将 pandas 系列日期时间转换为字符串