我正在尝试将数组中低于某个阈值的成员设置为nan。这是QA/QC过程的一部分,输入数据可能已经有nan的槽。
例如,我的阈值可能为-1000,因此我想将以下数组中的-3000设置为nan:
x = np.array([np.nan,1.,2.,-3000.,np.nan,5.])
这是需要翻译的内容:
以下是:
x[x < -1000.] = np.nan
产生了正确的行为,但也会出现一个运行时警告,但禁用警告的开销较大。
warnings.filterwarnings("ignore")
...
warnints.resetwarnings()
这有点笨重且可能有些不安全。
尝试使用以下高级索引两次进行索引不会产生任何效果:
nonan = np.where(~np.isnan(x))[0]
x[nonan][x[nonan] < -1000.] = np.nan
我猜想这是由于整数索引或重复索引的使用导致了副本的生成。
有没有相对简单的解决方案?在处理过程中使用掩码数组也可以,但最终产品必须是ndarray,并且不能引入新的依赖项。谢谢。