Trouver les maxima/minima locaux dans un tableau Numpy 1D avec Numpy
Identifier les maxima et minima locaux dans un tableau numpy 1D est une tâche courante en traitement du signal et analyse de données. Alors qu'une approche simple consiste à comparer un élément avec ses voisins les plus proches, une solution plus robuste est recherchée au sein des bibliothèques numpy/scipy.
Solution utilisant l'argrelextrema de SciPy
Dans SciPy À partir des versions 0.11, la fonction argrelextrema fournit un moyen efficace de trouver les extrema locaux dans un plan 1D. array :
import numpy as np from scipy.signal import argrelextrema x = np.random.random(12) # Find indices of local maxima maxima_indices = argrelextrema(x, np.greater) # Find indices of local minima minima_indices = argrelextrema(x, np.less)
La fonction renvoie des tuples contenant des indices d'éléments qui sont des maxima ou des minima locaux :
>>> argrelextrema(x, np.greater) (array([1, 5, 7]),) >>> argrelextrema(x, np.less) (array([4, 6, 8]),)
Pour obtenir les valeurs réelles à ces extrema locaux :
>>> x[argrelextrema(x, np.greater)[0]]
Fonctions supplémentaires dans SciPy
En plus de arglextrema, SciPy fournit des fonctions spécialisées pour trouver uniquement des maxima ou des minima :
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!