python 寻找离散序列极值点的方法
使用scipy.signal的argrelextrema函数(API),简单方便
importnumpyasnp importpylabaspl importmatplotlib.pyplotasplt importscipy.signalassignal x=np.array([ 0,6,25,20,15,8,15,6,0,6,0,-5,-15,-3,4,10,8,13,8,10,3, 1,20,7,3,0]) plt.figure(figsize=(16,4)) plt.plot(np.arange(len(x)),x) printx[signal.argrelextrema(x,np.greater)] printsignal.argrelextrema(x,np.greater) plt.plot(signal.argrelextrema(x,np.greater)[0],x[signal.argrelextrema(x,np.greater)],'o') plt.plot(signal.argrelextrema(-x,np.greater)[0],x[signal.argrelextrema(-x,np.greater)],'+') #plt.plot(peakutils.index(-x),x[peakutils.index(-x)],'*') plt.show()
[2515610131020] (array([2,6,9,15,17,19,22]),)
但是存在一个问题,在极值有左右相同点的时候无法识别,但是个人认为在实际的使用过程中极少会出现这种情况,所以可以忽略。
x=np.array([ 0,15,15,15,15,8,15,6,0,6,0,-5,-15,-3,4,10,8,13,8,10,3, 1,20,7,3,0]) plt.figure(figsize=(16,4)) plt.plot(np.arange(len(x)),x) printx[signal.argrelextrema(x,np.greater)] printsignal.argrelextrema(x,np.greater) plt.plot(signal.argrelextrema(x,np.greater)[0],x[signal.argrelextrema(x,np.greater)],'o') plt.plot(signal.argrelextrema(x,np.less)[0],x[signal.argrelextrema(x,np.less)],'+') plt.show()
[15610131020] (array([6,9,15,17,19,22]),)
以上这篇python寻找离散序列极值点的方法就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持毛票票。