1D numpy配列でNumpyを使用して局所的な最大値/最小値を見つける 質問する

1D numpy配列でNumpyを使用して局所的な最大値/最小値を見つける 質問する

1D numpy 配列で局所的な最大値/最小値を見つけることができる numpy/scipy のモジュール関数を提案していただけますか? 明らかに最も簡単な方法は最も近い近傍を調べることですが、numpy ディストリビューションの一部である受け入れられたソリューションが欲しいです。

ベストアンサー1

SciPy >= 0.11の場合

import numpy as np
from scipy.signal import argrelextrema

x = np.random.random(12)

# for local maxima
argrelextrema(x, np.greater)

# for local minima
argrelextrema(x, np.less)

生産する

>>> x
array([ 0.56660112,  0.76309473,  0.69597908,  0.38260156,  0.24346445,
    0.56021785,  0.24109326,  0.41884061,  0.35461957,  0.54398472,
    0.59572658,  0.92377974])
>>> argrelextrema(x, np.greater)
(array([1, 5, 7]),)
>>> argrelextrema(x, np.less)
(array([4, 6, 8]),)

注意: これらはローカルの最大値/最小値である x のインデックスです。値を取得するには、次を試してください。

>>> x[argrelextrema(x, np.greater)[0]]

scipy.signalまた、それぞれ最大値と最小値を見つけるための とargrelmaxも提供しますargrelmin

おすすめ記事