首頁 >後端開發 >Python教學 >如何使用 SciPy 找出 1D Numpy 陣列中的局部最大值和最小值?

如何使用 SciPy 找出 1D Numpy 陣列中的局部最大值和最小值?

Linda Hamilton
Linda Hamilton原創
2024-11-15 09:26:03189瀏覽

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

使用Numpy 找出一維Numpy 陣列中的局部最大值/最小值

辨識一維屬numpy 陣列中的局部最大值和最小值是一項常見任務從事訊號處理和資料分析。雖然簡單的方法涉及將元素與其最近的鄰居進行比較,但在 numpy/scipy 庫中尋求更強大的解決方案。

使用 SciPy 的 argrelextrema 的解決方案

在 SciPy 中從版本 0.11 開始,argreextrema 函數提供了一種在 a中尋找局部極值的有效方法一維數組:

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