簡體   English   中英

內置函數argrelextrema Python背后的邏輯

[英]Logic behind inbuilt function argrelextrema Python

argrelextrema中有此函數argrelextremascipy.signal中找到局部極值。 這是我嘗試的:

import numpy as np

from scipy.signal import argrelextrema

z = np.array([[56,32,12,10,13],[33,55,77,32,11],[12,66,89,43,33]])

argrelextrema(z, np.greater)

輸出:

(array([], dtype=int64), array([], dtype=int64))

z[1][2]z[2][2]元素不是很明顯的局部極值嗎? 那為什么它們不出現在輸出中呢? 提前致謝。

argrelextrema采用axis arg,其默認值為0 ,這可能是違反直覺的。 因此,在您的主要示例中,在這種情況下,它們確實不是局部最大值。 在回答@tamasgal的第二個示例中,12 <98> 89,因此確實存在局部最大值,如輸出所示,在第1行第2列。

如果在調用中設置axis=1 ,則將返回正確的結果:

import numpy as np
from scipy.signal import argrelextrema

z = np.array([[56,32,12,10,13],[33,55,77,32,11],[12,66,89,43,33]])

argrelextrema(z, np.greater, axis=1)

輸出:

(array([1, 2]), array([2, 2]))

請注意,如果要使用np.greater作為運算符,則也有argrelmax別名。

argrelextrema僅適用於一維數組。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM