3 回答

慕尼黑5688855
TA貢獻1848條經驗 獲得超2個贊
如果您要查找1d數組a
中小于其鄰居的所有條目,您可以嘗試
numpy.r_[True, a[1:] < a[:-1]] & numpy.r_[a[:-1] < a[1:], True]
您還可以在使用此步驟之前平滑陣列numpy.convolve()
。
我認為沒有專門的功能。

青春有我
TA貢獻1784條經驗 獲得超8個贊
對于沒有太多噪音的曲線,我建議使用以下小代碼片段:
from numpy import *
# example data with some peaks:
x = linspace(0,4,1e3)
data = .2*sin(10*x)+ exp(-abs(2-x)**2)
# that's the line, you need:
a = diff(sign(diff(data))).nonzero()[0] + 1 # local min+max
b = (diff(sign(diff(data))) > 0).nonzero()[0] + 1 # local min
c = (diff(sign(diff(data))) < 0).nonzero()[0] + 1 # local max
# graphical output...
from pylab import *
plot(x,data)
plot(x[b], data[b], "o", label="min")
plot(x[c], data[c], "o", label="max")
legend()
show()
這+1很重要,因為diff減少了原始索引號。
添加回答
舉報
0/150
提交
取消