2017-01-22 51 views
1

我有一個輸入源,它給了我[0..256]中的整數。如何檢測數據流中的變化率Python3

我希望能夠定位此數據中的尖峯,即新輸入。 我試過在查找百分比錯誤時使用滾動平均值。但這並不真正奏效。

基本上,我希望我的程序能夠找到數據的圖形在哪裏出現尖峯,但我希望它忽略平滑過渡。

想法?

+0

也許你可以比的第一刻起更多的工作。假設一個給定的(以滾動爲中心的)分佈並計算它的第95百分位數,VS這個高峯值呢? – Kanak

+0

@Tualual我不是很能幹,你能否詳細說明一下? – mcchucklezz

回答

0

一個簡單的想法,跟隨我的評論。首先

>>> import numpy as np 

假設我們有以下的時間序列

>>> sample = np.random.random_integers(0,256,size=(100,)) 

知道秒殺是否可以被看作是一個罕見的事件,我們必須瞭解相關的每個事件的可能性。既然你正在處理「的變化率」,讓我們計算那些

>>> sample_vars = np.abs(-1 + 1.*sample[1:]/sample[:-1]) # the "1.*" to get floats... (python<3) 

然後,我們可以定義哪些有發生

>>> spike_defining_threshold = np.percentile(sample_vars, 95) 

最後,如果最多5%(樣品 - )的機會的變化sample_vars[-1]>spike_defining_threshold

將是巨大的,如果別人有想法,以及分享...