0
我將下面的MATLAB代碼成Python:創建不同大小的hstacks的Python的NP vstack
function segments = segmentSlidingWindow(data, wSize, sSize)
len = size(data,1);
wCurr = 1;
segments = []; % todo: init to make faster
while (wCurr<len-wSize)
segments = [segments; wCurr wCurr+wSize]; % start stop
wCurr = wCurr+sSize; % step forward
end
segments = [segments; wCurr len]; % add residual
end
我寫了下面的Python代碼後的Numpy for Matlab users guide
def sliding_window(data, window_size, step_size):
length = data.shape[0]
wCurr = 0
segments = []
while wCurr < length - window_size:
segments = np.vstack([np.hstack([segments]), np.hstack([wCurr, window_size + wCurr])])
wCurr = wCurr + step_size
segments = np.vstack([np.hstack([segments]), np.hstack([wCurr, length])])
plt.plot(segments)
plt.show()
return segments
我也繪製分段數據以查看其外觀。
segments = np.vstack([np.hstack([segments]), np.hstack([wCurr, window_size + wCurr])])
我得到以下錯誤:
ValueError: all the input array dimensions except for the concatenation axis must match exactly
當我打印length
我得到504
我的數據是但是,我不能,因爲上線運行此Python代碼熊貓DataFrame與5列。我只需要在中間三列上有一個滑動窗口,因爲它們是唯一相關的。第一列是時間戳,最後一列是標籤。
wSize
和sSize
是整數。
我想打一個滑動窗口這樣的事情:
1495573445.162, 0, 0.021973, 0.012283, -0.995468, 1
1495573445.172, 0, 0.021072, 0.013779, -0.994308, 1
1495573445.182, 0, 0.020157, 0.015717, -0.995575, 1
1495573445.192, 0, 0.017883, 0.012756, -0.993927, 1
1495573445.202, 0, 0.021194, 0.012161, -0.994705, 1
1495573445.212, 0, 0.019638, 0.013718, -0.994019, 1
1495573445.222, 0, 0.019440, 0.010803, -0.994476, 1
1495573445.232, 0, 0.018112, 0.010849, -0.993073, 1
1495573445.242, 0, 0.020157, 0.011154, -0.994644, 1
1495573445.252, 0, 0.020340, 0.010040, -0.995804, 1
1495573445.262, 0, 0.017792, 0.009857, -0.996078, 1
1495573445.272, 0, 0.020538, 0.010239, -0.994858, 1
,其中輸出將與步長的窗口大小的一半滾動窗口。
你能,請提供一些測試數據(非常小的numpy的陣列? –
你的代碼適用於我的模擬數據:'segments = np.array([[1,2,3,4],[5,6,7,8]])','wCurr = np.array( [[1,2],[3,4]])和'window_size = np.array([[10,20],[30,40]])。然後'segments = np.vstack([np.hstack([segments]),np.hstack([wCurr,window_size + wCurr])])'工作,'segments'的新值爲:'array([[1 ,2,3,4],[5,6,7,8],[1,2,11,22],[3,4,33,44]])' –
您確實需要提供您的示例數據或至少每個輸入陣列的形狀。事實上,形狀就足夠了。 –