## 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 value, a stop value, and optionally an array size. It returns an array of evenly spaced numbers. This 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.  ]
```

Calculate the EMA for our data:

1. Now, back to the weights, calculate them with `exp()` and `linspace()`:

```N = 5
weights = np.exp(np.linspace(-1., 0., N))```
2. Normalize the weights with the `ndarray` `sum()` method:

```weights /= weights.sum()
print("Weights", weights)```

For `N = 5`, we get these weights:

```Weights [ 0.11405072  0.14644403  0.18803785  0.24144538  0.31002201]
```
3. After this, use the `convolve()` function...