Данные временного ряда массива 3D numpy создают запаздывающие элементы - PullRequest
0 голосов
/ 19 апреля 2020

У меня есть массив 3D numpy с размером данных 100000 * 24 * 53,100000 - это число экземпляров, 24 * 53 означает, что у нас есть 24 функции в 53 непрерывных временных точках. что я собираюсь сделать, это преобразовать его в два блока данных с размером 700000 * 24 * 40, 700000 * 24 * 6, (x_window = 40, y = window = 6), логика c каждого фрагмента экземпляра похожа ниже, затем объедините их вместе.

 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]]

Я использую кучу для l oop для обработки данных прямо сейчас, но это очень медленно:

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)

что-то У меня есть более быстрый способ сделать это? Более того, большинство данных имеют Nan в начале и в конце. У меня есть 2 списка, которые называются первым и последним для записи первого и последнего значений vaild, поэтому мой l oop примерно равен

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)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...