Time for action – calculating the exponential moving average
Given an array, the exp
function calculates the exponential of each array element. For example, look at the following code:
x = np.arange(5) print "Exp", np.exp(x)
It gives the following output:
Exp [ 1. 2.71828183 7.3890561 20.08553692 54.59815003]
The linspace
function takes, as parameters, a start and a stop and optionally an array size. It returns an array of evenly spaced numbers. The following is an example:
print "Linspace", np.linspace(-1, 0, 5)
This will give us the following output:
Linspace [-1. -0.75 -0.5 -0.25 0. ]
Let's calculate the exponential moving average for our data:
Now, back to the weights—calculate them with
exp
andlinspace
.N = int(sys.argv[1]) weights = np.exp(np.linspace(-1., 0., N))
Normalize the weights. The
ndarray
object has asum
method that we will use.weights /= weights.sum() print "Weights", weights
For N = 5, we get the following weights:
Weights [ 0.11405072 0.14644403 0.18803785...