Let’s assume we have two vectors, `a`

and `b`

, and we want to add them.

The vector `a`

holds the squares of integers 0 to n. The vector `b`

holds the cube of integers 0 to n. For example, if `n = 3`

then the vector `a`

is equal to 0, 1, or 4; and the vector `b`

is equal to 0, 1, or 8.

Let’s do it first with plain Python then with NumPy.

Create a new notebook and add the following code to it:

```
def pythonsum(n):
a = list(range(n))
b = list(range(n))
c = []
for i in range(len(a)):
a[i] = i ** 2
b[i] = i ** 3
c.append(a[i] + b[i])
return c
pythonsum(3)
# output
[0, 2, 12]
```

Let’s do it now with NumPy:

```
import numpy
def numpysum(n):
a = numpy.arange(n) ** 2
b = numpy.arange(n) ** 3
c = a + b
return c
numpysum(3)
# output
array([ 0, 2, 12])
```

There you have it! With NumPy we don’t need a `for`

loop, we used the `arrange()`

function from NumPy that creates an array (with integers from 0 to n) for us, and it is faster.

The results are the same but Python outputs a Python list while the NumPy outputs a NumPy array.