gpt4 book ai didi

Python Numpy 掩码 NaN 不起作用

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

我只是尝试使用掩码数组来过滤掉一些 nan 条目。

import numpy as np
# x = [nan, -0.35, nan]
x = np.ma.masked_equal(x, np.nan)
print x

输出如下:

masked_array(data = [        nan -0.33557216         nan],
mask = False,
fill_value = nan)

x 上调用 np.isnan() 会返回正确的 bool 数组,但掩码似乎不起作用。为什么我的 mask 不能像我预期的那样工作?

最佳答案

您可以使用 np.ma.masked_invalid :

import numpy as np

x = [np.nan, 3.14, np.nan]
mx = np.ma.masked_invalid(x)

print(repr(mx))
# masked_array(data = [-- 3.14 --],
# mask = [ True False True],
# fill_value = 1e+20)

或者,使用 np.isnan(x) 作为 np.ma.masked_arraymask= 参数:

print(repr(np.ma.masked_array(x, np.isnan(x))))
# masked_array(data = [-- 3.14 --],
# mask = [ True False True],
# fill_value = 1e+20)

为什么您原来的方法不起作用?因为,与直觉相反,NaN 不等于 NaN!

print(np.nan == np.nan)
# False

这实际上是part of the IEEE-754 definition of NaN

关于Python Numpy 掩码 NaN 不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28160590/

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