Skip to content

Pythoneo

Online How to Python stuff

How to calculate moving sum and moving average using Numpy Convolve?

Posted on December 5, 2021March 2, 2023 By Luke K

Let’s learn yourself how to calculate moving sum and moving average using Numpy Convolve. We will get to know a few tricks of Numpy Convolve function.
Numpy moving sum

Numpy denominator and moving average

The easiest moving sum

First let’s see how to calculate the most basic version of moving sum. Let’s have given list of numbers. To calculate moving sum use Numpy Convolve function taking list as an argument. The second one will be ones_like of list.

import numpy as np

my_list = [1, 2, 3, 4, 5]

moving_sum = np.convolve(my_list, np.ones_like(my_list))
print(f"Moving sum exuals: {moving_sum}")

Numpy moving sum

As you can see moving sum has been calculated. Here’s how it was calculated:
1
1 + 2 = 3
1 + 2 + 3 = 6
1 + 2 + 3 + 4 = 10
1 + 2 + 3 + 4 + 5 = 15
2 + 3 + 4 + 5 = 14
3 + 4 + 5 = 12
4 + 5 = 9
5

See also  How to calculate standard deviation in Numpy?

Convolve method

The are 3 different parameters of Convolve function. Let’s see how they work. Valid parameter goes as a first one.

import numpy as np

my_list = [1, 2, 3, 4, 5]

moving_sum = np.convolve(my_list, np.ones_like(my_list),'valid')
print(f"Moving valid sum exuals: {moving_sum}")

numpy moving valid sum

You can see that only the highest value has been returned.

And this is how the “Same” parameter works.

import numpy as np

my_list = [1, 2, 3, 4, 5]

moving_sum = np.convolve(my_list, np.ones_like(my_list),'same')
print(f"Moving same sum exuals: {moving_sum}")

Numpy moving same sum

In our example “same” just skipped the lowest values.

See also  How to save array as csv file with Numpy?

“Full” we will see as the latest one.

import numpy as np

my_list = [1, 2, 3, 4, 5]

moving_sum = np.convolve(my_list, np.ones_like(my_list),'full')
print(f"Moving full sum exuals: {moving_sum}")

Numpy moving full sum

As you see the result is the same as for regular Convolve. This is because “full” is a default option.

We already know how to calculate moving sum. Then we are ready to calculate moving mean in Python.

To calculate moving average you first need to create a denominator. You can do it thanks to list comprehension.

See also  How to compare two arrays in Numpy?

To calculate the moving mean just divide moving average by your denominator like that:

import numpy as np

my_list = [1, 2, 3, 4, 5]
denominator = list(range(1, 5)) + list(range(5, 0, -1))
print(f"Denominator exuals: \n{denominator}")

moving_average = np.convolve(my_list, np.ones_like(my_list)) / denominator
print(f"Moving average exuals: \n{moving_average}")

Numpy denominator and moving average

Here is my short explanation on how moving average has been calculated exactly:
1 / 1 = 1
(1 + 2) / 2 = 1.5
( 1 + 2 + 3) / 3 = 2
(1 + 2 + 3 + 4) / 4 = 2.5
(1 + 2 + 3 + 4 + 5) / 5 = 3
(2 + 3 + 4 + 5) / 4 = 3.5
(3 + 4 + 5) / 3 = 4
(4 + 5) / 2 = 4.5
5 / 1 = 5

numpy Tags:Convolve, denominator, moving average, moving mean, moving sum

Post navigation

Previous Post: How to convert list to Numpy array?
Next Post: How to create one-element tuple?

Categories

  • bokeh (1)
  • datetime (3)
  • Django (5)
  • glob (1)
  • io (1)
  • json (1)
  • math (5)
  • matplotlib (10)
  • numpy (95)
  • OpenCV (1)
  • os (3)
  • Pandas (2)
  • paramiko (1)
  • pathlib (2)
  • Pillow (3)
  • Plotly (3)
  • Python (29)
  • random (7)
  • requests (1)
  • Scipy (4)
  • Seaborn (7)
  • shutil (1)
  • sqlite3 (1)
  • statistics (16)
  • sys (1)
  • Tkinter (9)
  • turtle (2)
  • Uncategorized (1)
  • urllib (1)
  • webbrowser (1)

RSS RSS

  • How to create violin plot using seaborn?
  • How To Use Colormaps In Matplotlib?
  • How to calculate bonds in Python
  • How to handle trigonometry in Python
  • How to Convert Int to Binary in Python?
  • How to fix ValueError: The truth value of an array with zero elements is ambiguous?
  • How to solve NameError: name ‘numpy’ is not defined
  • How to insert seaborn lineplot?
  • How to Find the Length of an Array in Python?
  • How to reset secret key in Django

Tags

arithmetic mean array axis button calculations chart conversion copy count counter data type dictionary dimension draw error files fill float generate grid GUI image index integer list matrix max mean median min normal distribution plot random reshape rotate round size standard deviation string sum test text time variance zero

Copyright © 2023 Pythoneo.

Powered by PressBook WordPress theme

We use cookies on our website to give you the most relevant experience by remembering your preferences and repeat visits. By clicking “Accept”, you consent to the use of ALL the cookies.
Cookie settingsACCEPT
Manage consent

Privacy Overview

This website uses cookies to improve your experience while you navigate through the website. Out of these, the cookies that are categorized as necessary are stored on your browser as they are essential for the working of basic functionalities of the website. We also use third-party cookies that help us analyze and understand how you use this website. These cookies will be stored in your browser only with your consent. You also have the option to opt-out of these cookies. But opting out of some of these cookies may affect your browsing experience.
Necessary
Always Enabled
Necessary cookies are absolutely essential for the website to function properly. This category only includes cookies that ensures basic functionalities and security features of the website. These cookies do not store any personal information.
Non-necessary
Any cookies that may not be particularly necessary for the website to function and is used specifically to collect user personal data via analytics, ads, other embedded contents are termed as non-necessary cookies. It is mandatory to procure user consent prior to running these cookies on your website.
SAVE & ACCEPT