# python numpy find local minima

```import numpy as np
from scipy.signal import argrelextrema
import matplotlib.pyplot as plt

x = np.array([6, 3, 5, 2, 1, 4, 9, 7, 8])
y = np.array([2, 1, 3 ,5 ,3 ,9 ,8, 10, 7])

# sort the data in x and rearrange y accordingly
sortId = np.argsort(x)
x = x[sortId]
y = y[sortId]

# this way the x-axis corresponds to the index of x
plt.plot(x-1, y)
plt.show()
maxm = argrelextrema(y, np.greater)  # (array([1, 3, 6]),)
minm = argrelextrema(y, np.less)  # (array([2, 5, 7]),)
```

Here is what the above code is Doing:
1. It sorts the x-values and rearranges the y-values accordingly.
2. It plots the data.
3. It finds the indices of the local maxima and minima.

The indices of the local maxima and minima are returned as a tuple of arrays.
The first array contains the indices of the local maxima, and the second array
contains the indices of the local minima.

The indices of the local maxima and minima are returned as a tuple of arrays.
The first array contains the indices of the local maxima, and the second array
contains the indices of the local minima.