添加时NumPy中的cumsum函数会衰减吗? [英] Can the cumsum function in NumPy decay while adding?
本文介绍了添加时NumPy中的cumsum函数会衰减吗?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
我有一个值数组 a =(2,3,0,0,4,3)
y=0
for x in a:
y = (y+x)*.95
有什么方法可以在 numpy
中使用 cumsum
并在添加下一个值之前对每行应用.95衰减?
Is there any way to use cumsum
in numpy
and apply the .95 decay to each row before adding the next value?
推荐答案
您要的是简单的 IIR过滤器.为此,Scipy的 lfilter()的用途是:
You're asking for a simple IIR Filter. Scipy's lfilter() is made for that:
import numpy as np
from scipy.signal import lfilter
data = np.array([2, 3, 0, 0, 4, 3], dtype=float) # lfilter wants floats
# Conventional approach:
result_conv = []
last_value = 0
for elmt in data:
last_value = (last_value + elmt)*.95
result_conv.append(last_value)
# IIR Filter:
result_IIR = lfilter([.95], [1, -.95], data)
if np.allclose(result_IIR, result_conv, 1e-12):
print("Values are equal.")
这篇关于添加时NumPy中的cumsum函数会衰减吗?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!
查看全文