Python 如何删除窗口中围绕NaN值的数组中的点

Python 如何删除窗口中围绕NaN值的数组中的点,python,arrays,numpy,nan,Python,Arrays,Numpy,Nan,我将numpy数组中的大纲视图替换为 signal[signal > high_limit] = np.nan 我可以找到那些NaN值的位置 nan_spots = np.where(np.isnan(signal)) 但我一直在编写一个简单的代码,通过将所有NaN值周围的相邻点替换为NaN,在大纲视图的小窗口+-1范围内删除它们 将numpy导入为np import numpy as np border = 1 signal = np.array([1,2,3,4,np.nan, n

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

signal[signal > high_limit] = np.nan
我可以找到那些NaN值的位置

nan_spots = np.where(np.isnan(signal))
但我一直在编写一个简单的代码,通过将所有NaN值周围的相邻点替换为
NaN
,在大纲视图的小窗口+-1范围内删除它们

将numpy导入为np
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
边框=1 信号=np.数组([1,2,3,4,np.nan,np.nan,6,8,0,np.nan])
has_nan_nb=lambda i:any(np.isnan([signal[k]表示k在范围内(i-border,i+border+1),如果k!=i和k>=0,k声音像a。听起来像是isnan结果与合适的阶跃函数的卷积。完美!工作了!PS我是python新手,所以不知道lambda技巧,谢谢you@Blondinka欢迎来到Python!玩得开心!