仅当没有传递给函数时,才在函数中生成值的 Python 友好方式是什么?

问题描述

我正在尝试分块过滤一个非常大的时间序列。我将块传递给一个函数 butter_bandpass_filter (如下)。每个块都需要一个初始过滤条件数组 (zi),但第一个块没有 zi。我希望这个函数能够为第一个生成一个,然后注意到我正在为其余的块传递一个,而不必费心计算它们。

现在,这运行,但我收到错误

:12: FutureWarning: 元素比较失败;改为返回标量,但将来会执行元素比较 如果 zi == "init":

大概是因为在第一个块之后,它将我在参数中提供的字符串与之后传递给它的 numpy 数组进行比较。有没有更聪明的方法来做到这一点,不会出现这个错误

这是我的第一篇 SO 帖子,对我违反的约定提前表示歉意。 :p

from scipy.signal import butter,lfilter,lfilter_zi

def butter_bandpass(lowcut,highcut,fs,order=5):
    nyq = 0.5 * fs
    low = lowcut / nyq
    high = highcut / nyq
    b,a = butter(order,[low,high],btype='band')
    return b,a

def butter_bandpass_filter(data,lowcut,zi="init",order=5):
    b,a = butter_bandpass(lowcut,order=order)
    if zi == "init":
        zi = lfilter_zi(b,a)
    return lfilter(b,a,data,zi=zi)

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)