微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

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

如何解决仅当没有传递给函数时,才在函数中生成值的 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 举报,一经查实,本站将立刻删除。