在 Python 中查詢峰值
Shivam Arora
2023年1月30日
2021年12月2日
-
在 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
引數。此引數是用作最小化過濾器的距離引數。我們需要提供 comparator
引數作為 np.greater
方法來計算峰值的索引。
例如,
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]