Scipy筛选器仅返回nan值

6qqygrtg  于 2023-04-21  发布在  其他
关注(0)|答案(1)|浏览(154)

我尝试使用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.数组只是一个例子,使代码可重复)。

cclgggtu

cclgggtu1#

输入数组my_array包含NaN个值。
当你创建没有nans的input数组时,output数组也没有nans:

my_array = np.random.random(1000)  # input without NaNs
tt = apply_filter(my_array,64,30)  # output has no NaNs

这让我想起了以前的GIGO rule

相关问题