gpt4 book ai didi

python - 如何在 numpy 数组中找到唯一的非 nan 值?

转载 作者:太空狗 更新时间:2023-10-29 19:36:39 26 4
gpt4 key购买 nike

我想知道是否有一种干净的方法来处理 numpy 中的 nan。

my_array1=np.array([5,4,2,2,4,np.nan,np.nan,6])
print my_array1
#[ 5. 4. 2. 2. 4. nan nan 6.]
print set(my_array1)
#set([nan, nan, 2.0, 4.0, 5.0, 6.0])

我原以为它最多应该返回 1 nan 值。为什么它返回多个 nan 值?我想知道我在一个 numpy 数组中有多少个唯一的非 nan 值。

谢谢

最佳答案

您可以使用 np.unique 结合 isnan 来查找唯一值以过滤 NaN 值:

In [22]:

my_array1=np.array([5,4,2,2,4,np.nan,np.nan,6])
np.unique(my_array1[~np.isnan(my_array1)])
Out[22]:
array([ 2., 4., 5., 6.])

至于为什么会得到多个NaN值是因为NaN值不能正常比较:

In [23]:

np.nan == np.nan
Out[23]:
False

所以你必须使用isnan来执行正确的比较

使用设置:

In [24]:

set(my_array1[~np.isnan(my_array1)])
Out[24]:
{2.0, 4.0, 5.0, 6.0}

您可以对上述任何一个调用 len 来获取大小:

In [26]:

len(np.unique(my_array1[~np.isnan(my_array1)]))
Out[26]:
4

关于python - 如何在 numpy 数组中找到唯一的非 nan 值?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28940412/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com