我尝试使用scipy过滤器过滤一个包含nan值的数组:
import numpy as np
import scipy.signal as sp
def apply_filter(x,fs,fc):
l_filt = 2001
b = sp.firwin(l_filt, fc, window='blackmanharris', pass_zero='lowpass', fs=fs)
# zero-phase filter:
xmean = np.nanmean(x)
y = sp.filtfilt(b, 1, x - xmean, padlen=9)
y += xmean
return y
my_array = [13.049393453879606, 11.710994125276567, 15.39159227893492, 14.053192950331884, np.nan, np.nan, np.nan, np.nan, np.nan, 18.57029068436713, np.nan, np.nan, np.nan, np.nan, 15.893492027161058, 16.228091859311817, 15.558892195010298, np.nan, 8.866895551995118, 14.053192950331882]
tt = apply_filter(my_array,64,30)
在上面的代码中,“tt”的值是一个只包含nan值的数组,而不是过滤后的my_array。我做错了什么?(ps.数组只是一个例子,使代码可重复)。
1条答案
按热度按时间cclgggtu1#
输入数组
my_array
包含NaN个值。当你创建没有nans的input数组时,output数组也没有nans:
这让我想起了以前的GIGO rule