Python에서 피크 찾기

Shivam Arora 2023년1월30일
  1. scipy.signal.find_peaks() 함수를 사용하여 Python에서 피크 감지
  2. scipy.signal.argrelextrema() 함수를 사용하여 Python에서 피크 감지
  3. detecta.detect_peaks() 함수를 사용하여 Python에서 피크 감지
Python에서 피크 찾기

피크는 대부분의 로컬 값보다 높은 값입니다. 단일 글로벌 최대 피크 또는 여러 피크가 있을 수 있습니다. 그래프의 피크는 가시적이고 정의되어야 하며 데이터 노이즈에 숨겨져서는 안 됩니다.

이 기사에서는 Python에서 다양한 값 집합의 피크를 찾을 수 있습니다.

scipy.signal.find_peaks() 함수를 사용하여 Python에서 피크 감지

scipy.signal.find_peaks()는 주어진 데이터의 피크를 감지할 수 있습니다. 이 함수 width, threshold, distanceprominence와 관련된 매개변수는 거의 없습니다. 피크가 발견된 값의 인덱스를 반환합니다.

예를 들어,

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)

출력:

[ 3  6  9 15 17 19 22]

scipy.signal.argrelextrema() 함수를 사용하여 Python에서 피크 감지

이 함수는 find_peaks() 함수와 유사합니다. 또한 order 매개변수가 포함되어 있습니다. 이 매개변수는 최소화 필터 역할을 하는 거리 매개변수입니다. 피크의 인덱스를 계산하기 위해 np.greater 방법으로 comparator 인수를 제공해야 합니다.

예를 들어,

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)

출력:

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

detecta.detect_peaks() 함수를 사용하여 Python에서 피크 감지

Marcos Duarte가 작성한 자료를 기반으로 하는 알고리즘은 detect_peaks() 메서드로 구현되어 주어진 값 세트에서 피크를 찾습니다. 이 기능에서 튜닝 및 필터링 지원은 다른 기능만큼 완전하지 않습니다.

예를 들어,

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)

출력:

[ 3  6  9 15 17 19 22]