2013-03-28 72 views
1

我是熊貓新手。我有一個時間序列數據。我怎樣才能輕鬆完成以下操作?熊貓時間系列作業

我有一個稱爲輸入的2d矩陣。每行有5個元素。有大量的行(千)

input[t,:] = [f1, f2, f3, f4, f5]

(1)我需要計算樣本之間的相對差異。

rel[t,:] = (input[t,:]-input[t-1,:])/input[t-1,:]

(2)我需要創建一個大小80

win[t,:] = [rel[t,:],rel[t-1,:],...,rel[t-79,:]]

的滑動窗口,我怎麼能這樣做的熊貓,或者任何其他的框架,如scikit 。時間序列。

回答

2

您既可以在純numpy的做,雖然大熊貓大概會具有使其更容易的特定功能。但是:

rel = np.diff(input)/input[:-1] 

from numpy.lib.stride_tricks import as_strided 
win = as_strided(rel, shape=(rel.shape[0]-79, 80), strides=rel.strides*2) 

將做到這一點。


如果輸入了多行,你仍然可以做到以上爲:

rel = np.diff(input, axis=1)/input[:, :-1] 
win = as_strided(rel, shape=(rel.shape[0], rel.shape[1]-79, 80), 
       strides=rel.strides + rel.strides[1:]) 

雖然你可能要玩的「形狀」和匹配strides得到確切的窗口後的形狀。

+0

這看起來不錯,會嘗試測試它 – siamii

+0

如果輸入有'k'尺寸怎麼辦? – siamii

+0

@siamii您要如何計算相對差異或窗口k維數據?它當然可以完成,但是你需要確定你想要做什麼。 – Jaime