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
。