如何在一维Numpy阵列中用Numpy求局部最大值/最小值?

内容来源于 Stack Overflow,并遵循CC BY-SA 3.0许可协议进行翻译与使用

  • 回答 (2)
  • 关注 (0)
  • 查看 (274)

能建议一个从numpy/sciy中找到一维numpy数组中局部最大值/最小值的模块函数吗?

提问于
用户回答回答于

如果您正在查找1d数组中的所有条目a比他们的邻居小,你可以试试

numpy.r_[True, a[1:] < a[:-1]] & numpy.r_[a[:-1] < a[1:], True]

您的数组将使用numpy.convolve()

用户回答回答于

在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[argrelextrema(x, np.greater)[0]]

scipy.signal还提供argrelmaxargrelmin分别找出最大值和极小值。

扫码关注云+社区