[英]Logic behind inbuilt function argrelextrema Python
argrelextrema
中有此函數argrelextrema
在scipy.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.