首页  >  文章  >  后端开发  >  如何使用 SciPy 查找 1D Numpy 数组中的局部最大值和最小值?

如何使用 SciPy 查找 1D Numpy 数组中的局部最大值和最小值?

Linda Hamilton
Linda Hamilton原创
2024-11-15 09:26:03114浏览

How to Find Local Maxima and Minima in a 1D Numpy Array Using SciPy?

使用 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 还提供了专门用于查找的函数最大值或最小值:

  • argrelmax:查找局部最大值的索引
  • argrelmin:查找局部最小值的索引

以上是如何使用 SciPy 查找 1D Numpy 数组中的局部最大值和最小值?的详细内容。更多信息请关注PHP中文网其他相关文章!

声明:
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn