3D numpy数组时间序列数据创建滞后特征

时间:2020-04-19 05:12:36

标签: python pandas numpy time-series data-science

我有一个3D numpy数组,数据大小为100000 * 24 * 53,100000是实例数,24 * 53表示我们在53个连续时间点具有24个要素。我要做的是将其转换为大小为700000 * 24 * 40,700000 * 24 * 6,(x_window = 40,y = window = 6)的两个数据块,每个实例切片的逻辑如下在一起。

 original[0]=[[1,2,3,4,5],[6,7,8,9,10]] #2*5
 #if window_x=3, window_y=1
 out_x[0]=[[1,2,3],[2,3,4],[6,7,8],[7,8,9]]
 out_y[0]=[[4],[5],[9],[10]]

我现在正在使用一堆for循环来处理数据,但这非常慢:

toty=[]
totx=[]
for i in range(original.shape[0]): 
    outx=[]
    outy=[]
    for j in range(original[i].shape[1]-window_x-window_y):
        tmpx=original[i][j:j+x_window]
        tmpy=original[i][j+x_window:j+x_window+y_window]
        outx.append(tmpx)
        outy.append(tmpy)
    toty.append(outx)
    toty.append(outy)

类似的东西,我有更快的方法吗? 而且,大多数数据在头和尾都有难解之谜 我有2个名为first和last的列表来记录第一个和最后一个有效值,所以我的循环就像

toty=[]
totx=[]
for i in range(original.shape[0]): 
    outx=[]
    outy=[]
    for j in range(first[i],last[i]-window_x-window_y):
        tmpx=original[i][j:j+x_window]
        tmpy=original[i][j+x_window:j+x_window+y_window]
        outx.append(tmpx)
        outy.append(tmpy)
    toty.append(outx)
    toty.append(outy)

0 个答案:

没有答案