在numpy中淡出信号

时间:2017-11-30 22:41:44

标签: python numpy

产生累积和的最惯用的方法是什么,它随着它的移动而“消失”。让我用一个例子来解释。

>>> np.array([1,0,-1,0,0]).cumsum()
array([1, 1, 0, 0, 0], dtype=int32)

但是我想提供一个因子<1并产生类似的东西:

>>> np.array([1,0,-1,0,0]).cumsum_with_factor(0.5)
array([1.0, 0.5, -0.75, -0.375, -0.1875], dtype=float64)

如果速度快,这是一个很大的优势!

1 个答案:

答案 0 :(得分:5)

您的结果可以通过线性卷积获得:

signal = np.array([1,0,-1,0,0])
kernel = 0.5**np.arange(5)
np.convolve(signal, kernel, mode='full')
# array([ 1.    ,  0.5   , -0.75  , -0.375 , -0.1875, -0.125 , -0.0625,
          0.    ,  0.    ])

如果考虑性能,请使用scipy.signal.fftconvolve,这是对同一逻辑的更快实现。