Python でピークを見つける
Shivam Arora
2023年1月30日
-
Python で
scipy.signal.find_peaks()
関数を使用してピークを検出する -
Python で
scipy.signal.argrelextrema()
関数を使用してピークを検出する -
Python で
detecta.detect_peaks()
関数を使用してピークを検出する
ピークは、ほとんどのローカル値よりも高い値です。単一のグローバル最大ピークまたは複数のピークが存在する可能性があります。グラフのピークは表示および定義されている必要があり、データノイズに隠れてはなりません。
この記事では、Python のさまざまな値のセットのピークを見つけます。
Python で scipy.signal.find_peaks()
関数を使用してピークを検出する
scipy.signal.find_peaks()
は、指定されたデータのピークを検出できます。この関数 width
、threshold
、distance
、および prominence
に関連付けられているパラメーターはほとんどありません。ピークが見つかった値のインデックスを返します。
例えば、
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]
Python で scipy.signal.argrelextrema()
関数を使用してピークを検出する
この関数は、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),)
Python で detecta.detect_peaks()
関数を使用してピークを検出する
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]