# Linear Algebra with numpy – Part 1

Numpy is a package for scientific computing in Python.

`import numpy as np`

The most important data structure is ndarray, which is short for n-dimensional array.

You can convert a list to an numpy array with the array-method

```my_list = [1, 2, 3, 4]
my_array = np.array(my_list)```

You can also convert an array back to a list with

`my_new_list = my_array.tolist()`

You can retrieve the dimensionality of an array with the ndim property:

`my_array.ndim`

and get the number of data points with the shape property

`my_array.shape`

## Vector arithmetic

```a = np.array([1, 2, 3, 4])
b = np.array([4, 3, 2, 1])
a + b
array([5, 5, 5, 5])
a - b
array([-3, -1,  1,  3])```

### Scalar Multiplication

```a = np.array([1, 2, 3, 4])
a * 3
array([3,  6,  9, 12])```

To see why it is charming to use numpy’s array for this operation You have to consider the alternative:

```c = [1,2,3,4]
d = [x * 3 for x in c]```

### Dot Product

```a = np.array([1,2,3,4])
b = np.array([4,3,2,1])

a.dot(b)

20 # 1*3 + 2*3 + 3*2 + 4*1```

Stay tuned for more algebraic stuff with numpy!

Project on github