# Numpy Exercises 1-10

## 1. Import numpy as np and see the version

```import numpy as np
np.__version__```

`'1.21.5'`

## 2. How to create a 1D array?

(With numbers 0-9)

`np.arange(0, 10)`

If you need non-integer steps use np.linspace instead!

`array([0, 1, 2, 3, 4, 5, 6, 7, 8, 9])`

## 3. How to create a boolean array?

`np.full((3,3), True)`

```array([[ True, True, True], [ True, True, True], [ True, True, True]])```

## 4. How to extract items that satisfy a given condition from 1D array?

```arr = np.array([0, 1, 2, 3, 4, 5, 6, 7, 8, 9])
arr[arr % 2 == 1]```

Pretty cool, Numpy broadcasts operations to every element. `arr % 2 == 1` returns the mask we need to extract the odds.

## 6. How to replace items that satisfy a condition without affecting the original array?

`np.where(arr % 2 == 1, -1, arr)`

If you said just do a list comprehension... Me too. `np.where` has some damned useful features though! It's definitely visually cleaner too.

See the np.where documentation. It has a list comprehension equivalent too, which is pretty cool!

## 7. How to reshape an array?

Convert a 1D array to a 2D array.

`np.reshape(arr, (2, -1))`

Using `-1` as the second dimension lets numpy figure out how many columns there should be. Either dimension can be set to `-1`.

See the np.reshape documentation

## 8. How to stack two arrays vertically?

Given arrays `a` and `b`:

`a = np.arange(10).reshape(2,-1)b = np.repeat(1, 10).reshape(2,-1)`

We stack them by using vstack:

`np.vstack((a, b))`

```array([[0, 1, 2, 3, 4], [5, 6, 7, 8, 9], [1, 1, 1, 1, 1], [1, 1, 1, 1, 1]])```

See the np.vstack documentation.

## 9. How to stack two arrays horizontally?

Given the same `a` and `b` from problem 8:

`np.hstack((a,b))`

```array([[0, 1, 2, 3, 4, 1, 1, 1, 1, 1], [5, 6, 7, 8, 9, 1, 1, 1, 1, 1]])```

See the np.hstack documentation

## 10. How to generate custom sequences in numpy without hardcoding?

Given `a`: `a = np.array([1,2,3])`

Make: `#> array([1, 1, 1, 2, 2, 2, 3, 3, 3, 1, 2, 3, 1, 2, 3, 1, 2, 3])`

`np.hstack((np.repeat(a, 3), np.tile(a, 3)))`

Repeat repeats the elements of an array a given number of times. Tile repeats the array a given number of times.

See the np.repeat documentation and the np.tile documentation!

#### Tags

Last updated on 3/29/2022