使用 Numpy 查找一维 Numpy 数组中的局部最大值/最小值
识别一维 numpy 数组中的局部最大值和最小值是一项常见任务从事信号处理和数据分析。虽然简单的方法涉及将元素与其最近的邻居进行比较,但在 numpy/scipy 库中寻求更强大的解决方案。
使用 SciPy 的 argrelextrema 的解决方案
在 SciPy 中从版本 0.11 开始,argrelextrema 函数提供了一种在一维数组中查找局部极值的有效方法:
import numpy as np from scipy.signal import argrelextrema x = np.random.random(12) # Find indices of local maxima maxima_indices = argrelextrema(x, np.greater) # Find indices of local minima minima_indices = argrelextrema(x, np.less)
该函数返回包含局部最大值或最小值元素索引的元组:
>>> argrelextrema(x, np.greater) (array([1, 5, 7]),) >>> argrelextrema(x, np.less) (array([4, 6, 8]),)
要获取这些局部极值处的实际值:
>>> x[argrelextrema(x, np.greater)[0]]
SciPy 中的其他函数
除了 argrelextrema 之外,SciPy 还提供了专门用于查找的函数最大值或最小值:
以上是如何使用 SciPy 查找 1D Numpy 数组中的局部最大值和最小值?的详细内容。更多信息请关注PHP中文网其他相关文章!