0

Is there a faster way to create an exponential moving average than for loop?

I am priming the first n values of exp_aves to be mean of first n obseravtions.

def exp_mov_ave(observations, n):

    exp_ave = np.mean(observations[0:n])    
    
    lambdak = (n - 1) / (n + 1)
    exp_aves = []

    for i,element in enumerate(observations):
        if (i >= n):
            exp_ave = (lambdak * exp_ave) + ((1 - lambdak) * element)

        exp_aves.append(exp_ave)

    return np.array(exp_aves)
ManInMoon
  • 6,795
  • 15
  • 70
  • 133

0 Answers0