Calculating moving average using a sliding window

def moving_average(a, n=3) :

ret = np.cumsum(a, dtype=float)
print(ret)
print(ret[n:])
print(ret[:-n])

ret[n:] = ret[n:] - ret[:-n]
print(ret)
return ret[n - 1:] / n
Z = np.arange(20)
print(Z)
print(moving_average(Z, n=3))

[ 0  1  2  3  4  5  6  7  8  9 10 11 12 13 14 15 16 17 18 19]

[ 0. 1. 3. 6. 10. 15. 21. 28. 36. 45. 55. 66.
78. 91. 105. 120. 136. 153. 171. 190.]
[ 6. 10. 15. 21. 28. 36. 45. 55. 66. 78. 91. 105.
120. 136. 153. 171. 190.]
[ 0. 1. 3. 6. 10. 15. 21. 28. 36. 45. 55. 66.
78. 91. 105. 120. 136.]
[ 0. 1. 3. 6. 9. 12. 15. 18. 21. 24. 27. 30. 33. 36. 39.
42. 45. 48. 51. 54.]
[ 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15.
16. 17. 18.]


Refs.