产生累积和的最惯用的方法是什么,它随着它的移动而“消失”。让我用一个例子来解释。
>>> 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)
如果速度快,这是一个很大的优势!
答案 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
,这是对同一逻辑的更快实现。