ホームページ >バックエンド開発 >Python チュートリアル >SciPy の find_peaks 関数を使用して Python で重要なピークを見つける方法
Python/SciPy でのピークの検出
データ内のピークの検出は、信号処理、画像解析、信号処理などのさまざまな分野で一般的なタスクです。データ分析。 Python は、SciPy の scipy.signal.find_peaks 関数など、ピーク検出用のいくつかのパッケージと関数を提供します。
SciPy のピーク検出アルゴリズム
find_peaks 関数は、次のように 1D 配列を受け取ります。を入力してピークのインデックスを返します。これは、いくつかのパラメータに基づいてピークを検出するピーク検出アルゴリズムを採用しています:
ノイズ除去のプロミネンス
プロミネンス パラメーターは、重要なピークとノイズ誘発ピークを区別するのに特に役立ちます。 。プロミネンスは、山頂からより高い地形に到達するための最小高さの降下として定義されます。プロミネンスしきい値を高く設定することで、アルゴリズムはノイズによって引き起こされる小さなピークを効果的に除去できます。
使用例
次のコードは、ノイズの多い周波数でのピーク検出を示しています。 -find_peaks 関数を使用した正弦波の変化:
<code class="python">import numpy as np import matplotlib.pyplot as plt from scipy.signal import find_peaks x = np.sin(2*np.pi*(2**np.linspace(2,10,1000))*np.arange(1000)/48000) + np.random.normal(0, 1, 1000) * 0.15 peaks_prominence, _ = find_peaks(x, prominence=1) plt.plot(x) plt.plot(peaks_prominence, x[peaks_prominence], "ob") plt.legend(['Signal', 'Peaks (prominence)']) plt.show()</code>
プロットに示されているように、find_peaks 関数は高振幅とプロミネンスの両方を持つピークを見つけ、ノイズに起因するピークを効果的に除去します。
その他のピーク検索オプション
find_peaks に加えて、SciPy は、peak_widths や argrelmax などの他のピーク検索機能も提供します。これらの関数は、特定のアプリケーションや調整により適している可能性があります。
結論
SciPy の scipy.signal.find_peaks 関数は、Python でのピーク検出のための堅牢で汎用性の高いソリューションを提供します。 。プロミネンスなどの調整可能なパラメーターを使用して、さまざまな種類のデータの重要なピークを検出するようにカスタマイズできます。
以上がSciPy の find_peaks 関数を使用して Python で重要なピークを見つける方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。