## Searching

NumPy has several functions that can search through arrays:

• The `argmax()` function gives the indices of the maximum values of an array:

```>>> a = np.array([2, 4, 8])
>>> np.argmax(a)
2
```
• The `nanargmax()` function does the same, but ignores NaN values:

```>>> b = np.array([np.nan, 2, 4])
>>> np.nanargmax(b)
2
```
• The `argmin()` and `nanargmin()` functions provide similar functionality but pertaining to minimum values. The `argmax()` and `nanargmax()` functions are also available as methods of the `ndarray` class.

• The `argwhere()` function searches for non-zero values and returns the corresponding indices grouped by element:

```>>> a = np.array([2, 4, 8])
>>> np.argwhere(a <= 4)
array([[0],
[1]])
```
• The `searchsorted()` function tells you the index in an array where a specified value belongs to maintain the sort order. It uses binary search (see https://www.khanacademy.org/computing/computer-science/algorithms/binary-search/a/binary-search), which is...