Numpy: calculate based on previous element?

后端 未结 5 2284
北恋
北恋 2021-02-08 15:45

Say that I have array x and y:

x = numpy.array([1,2,3,4,5,6,7,8,9,10])  # actual content is the a result of another calculation step
         


        
5条回答
  •  粉色の甜心
    2021-02-08 16:31

    Perhaps the fastest and most concise way is to use scipy.signal.lfilter, which implements exactly the kind of recursive relationship you described:

    from scipy.signal import lfilter
    import numpy as np
    
    x = np.array([1,2,3,4,5,6,7,8,9,10])
    
    b = [1., 0.]
    a = [1., -2.]
    zi = np.array([2*50])  # initial condition
    y, _ = lfilter(b, a, x, zi=zi)
    

    Result will be np.float64, but you can cast to e.g. np.int32 if that's what you need:

    >>> y.astype(np.int32)
    array([  101,   204,   411,   826,  1657,  3320,  6647, 13302, 26613, 53236])
    

提交回复
热议问题