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.

You May Also Like

More From Author

+ There are no comments

Add yours

Leave a Reply