Я вписываю временные ряды в модель Keras LSTM, и у меня есть желаемый ввод формы (586075,30,8).Я делаю это сейчас:
# DataFrame input shape
print(train_features.shape)
(586105, 8)
x_train = []
y_train = []
t_steps = 30
# Segmenting Data
for i in range(t_steps, train_features.shape[0]):
x_train.append(train_features[i-t_steps:i,:] )#upper bound in slice excluded
y_train.append(train_targets[i-1,:] )
x_train, y_train = np.array(x_train), np.array(y_train)
print(x_train.shape, y_train.shape)
(586075,30,8) (586075,8)
Это невероятно медленно для больших наборов данных, и я знаю, что вы не должны зацикливаться на пандах, когда этого можно избежать.Есть ли способ сделать это, используя apply или другие более эффективные методы с пандами или numpy?
Последний столбец данных - это доля дня.Я использую это, чтобы замаскировать данные, чтобы последний временной шаг в каждой выборке составлял два раза:
# Filter for Times between 9:30 and 13:00
mask = np.where((x_train[:,-1,-1] > .3958) & (x_train[:,-1,-1] < .541667))
x_train = x_train[mask,:,:][0]
y_train = y_train[mask,:][0]
Кажется, что все это можно сделать за один шаг, гораздо эффективнее с помощью apply или генератора данных.,