【问题标题】:how to remove points in an array around NaN values within a window如何在窗口中删除围绕 NaN 值的数组中的点
【发布时间】:2019-01-11 15:56:22
【问题描述】:

我将 numpy 数组中的大纲替换为

signal[signal > high_limit] = np.nan

我可以定位那些 NaN 值的位置

nan_spots = np.where(np.isnan(signal))

但我坚持编写一个简单的代码来删除所有 NaN 值周围的相邻点,方法是用 NaNs 替换它们,在大纲的小窗口 +-1 左右。

【问题讨论】:

  • 听起来像dilation
  • 听起来像是 isnan 的结果与合适的阶跃函数的卷积。

标签: python arrays numpy nan


【解决方案1】:
import numpy as np
border = 1
signal = np.array([1,2,3,4,np.nan, np.nan, 6,8,0,np.nan])
has_nan_nb = lambda i: any(np.isnan([signal[k] for k in range(i-border, i+border+1) if k!=i and k>=0 and k<len(signal)]))
signal[np.vectorize(has_nan_nb)(np.arrange(len(signal)))] = np.nan

这在 1D 问题中很容易。

【讨论】:

  • 完美!工作! PS我是python新手,所以不知道lambda技巧和np.vectorize,谢谢
  • @Blondinka 欢迎使用 Python!玩得开心!
猜你喜欢
  • 2012-07-22
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-08-22
  • 2020-09-18
  • 2015-05-21
  • 2021-06-06
相关资源
最近更新 更多