添加时NumPy中的cumsum函数会衰减吗? [英] Can the cumsum function in NumPy decay while adding?

查看:106
本文介绍了添加时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屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆