# How to find local maxima or minima with NumPy in a 1d NumPy array with Python?

Estimated read time 2 min read

To find the local maxima or minima in a 1D NumPy array using Python, you can utilize the `argrelextrema` function from the `scipy.signal` module. This function allows you to find the indices of relative extrema (maxima or minima) within a given array. Here’s an example:

``````import numpy as np
from scipy.signal import argrelextrema

# Create a 1D NumPy array
data = np.array([1, 2, 3, 2, 4, 1, 2, 1])

# Find the indices of local maxima
maxima_indices = argrelextrema(data, np.greater)

# Find the indices of local minima
minima_indices = argrelextrema(data, np.less)

# Print the local maxima and minima values and indices
print("Local Maxima:")
print("Indices:", maxima_indices)
print("Values:", data[maxima_indices])

print("\nLocal Minima:")
print("Indices:", minima_indices)
print("Values:", data[minima_indices])``````

Output:

``````Local Maxima:
Indices: (array([2, 4]),)
Values: [3 4]

Local Minima:
Indices: (array([1, 5, 7]),)
Values: [2 1 1]``````

In the example above, we have a 1D NumPy array `data`. We use the `argrelextrema` function twice to find the indices of local maxima and minima. We pass the `np.greater` comparison function to find maxima and `np.less` to find minima.

The `argrelextrema` function returns a tuple containing a 1D array of indices where the relative extrema occur. We use these indices to extract the corresponding values from the original array (`data`).

Note that the `argrelextrema` function can find multiple local maxima or minima if they occur at different indices.

Add yours