在1D numpy数组中使用Numpy查找局部最大值/最小值

在1D numpy数组中使用Numpy查找局部最大值/最小值

你能否建议numpy / scipy的模块函数可以在1D numpy数组中找到局部最大值/最小值?显然,最简单的方法是看看最近的邻居,但我希望有一个公认的解决方案,这是numpy发行版的一部分。



慕丝7291255
浏览 2610回答 3
3回答

慕尼黑5688855

如果您要查找1d数组a中小于其邻居的所有条目,您可以尝试numpy.r_[True,&nbsp;a[1:]&nbsp;<&nbsp;a[:-1]]&nbsp;&&nbsp;numpy.r_[a[:-1]&nbsp;<&nbsp;a[1:],&nbsp;True]您还可以在使用此步骤之前平滑阵列numpy.convolve()。我认为没有专门的功能。

青春有我

对于没有太多噪音的曲线,我建议使用以下小代码片段: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+maxb = (diff(sign(diff(data))) > 0).nonzero()[0] + 1 # local minc = (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减少了原始索引号。
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Python