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
提交
取消