Trouver des pics en Python

Shivam Arora 30 janvier 2023
  1. Utilisez la fonction scipy.signal.find_peaks() pour détecter les pics en Python
  2. Utilisez la fonction scipy.signal.argrelextrema() pour détecter les pics en Python
  3. Utilisez la fonction detecta.detect_peaks() pour détecter les pics en Python
Trouver des pics en Python

Un pic est une valeur supérieure à la plupart des valeurs locales. Il peut y avoir un seul pic max global ou plusieurs pics. Les pics dans les graphiques doivent être visibles et définis et ne doivent pas être cachés dans le bruit des données.

Dans cet article, nous allons trouver les pics de différents ensembles de valeurs en Python.

Utilisez la fonction scipy.signal.find_peaks() pour détecter les pics en Python

Le scipy.signal.find_peaks() peut détecter les pics des données données. Peu de paramètres sont associés à cette fonction : width, threshold, distance et prominence. Il renvoie les indices de la valeur où se trouve le pic.

Par exemple,

from scipy.signal import find_peaks

lst = [
    5,
    3,
    2,
    19,
    17,
    8,
    13,
    5,
    0,
    6,
    1,
    -5,
    -10,
    -3,
    6,
    9,
    8,
    14,
    8,
    11,
    3,
    2,
    22,
    8,
    2,
    1,
]
peaks, _ = find_peaks(lst, height=0)
print(peaks)

Production:

[ 3  6  9 15 17 19 22]

Utilisez la fonction scipy.signal.argrelextrema() pour détecter les pics en Python

Cette fonction est similaire à la fonction find_peaks(). De plus, il contient un paramètre order. Ce paramètre est un paramètre de distance qui sert de filtre de minimisation. Nous devons fournir l’argument comparator comme méthode np.greater pour calculer les indices des pics.

Par exemple,

import numpy as np
from scipy.signal import argrelextrema

lst = [
    5,
    3,
    2,
    19,
    17,
    8,
    13,
    5,
    0,
    6,
    1,
    -5,
    -10,
    -3,
    6,
    9,
    8,
    14,
    8,
    11,
    3,
    2,
    22,
    8,
    2,
    1,
]
peaks = argrelextrema(np.array(lst), np.greater)
print(peaks)

Production:

(array([ 3,  6,  9, 15, 17, 19, 22], dtype=int64),)

Utilisez la fonction detecta.detect_peaks() pour détecter les pics en Python

Un algorithme basé sur du matériel écrit par Marcos Duarte est implémenté dans la méthode detect_peaks() pour trouver les pics dans un ensemble de valeurs donné. Dans cette fonction, la prise en charge du réglage et du filtrage n’est pas aussi complète que les autres fonctionnalités.

Par exemple,

from detecta import detect_peaks

lst = [
    5,
    3,
    2,
    19,
    17,
    8,
    13,
    5,
    0,
    6,
    1,
    -5,
    -10,
    -3,
    6,
    9,
    8,
    14,
    8,
    11,
    3,
    2,
    22,
    8,
    2,
    1,
]
index = detect_peaks(lst)
print(index)

Production:

[ 3  6  9 15 17 19 22]