import numpy as np def Add_Window_Horizon(data, window=3, horizon=1, single=False): """ :param data: shape [B, ...] :param window: :param horizon: :return: X is [B, W, ...], Y is [B, H, ...] """ length = len(data) end_index = length - horizon - window + 1 X = [] # windows Y = [] # horizon index = 0 if single: while index < end_index: X.append(data[index : index + window]) Y.append(data[index + window + horizon - 1 : index + window + horizon]) index = index + 1 else: while index < end_index: X.append(data[index : index + window]) Y.append(data[index + window : index + window + horizon]) index = index + 1 X = np.array(X) Y = np.array(Y) return X, Y if __name__ == "__main__": from data.load_raw_data import Load_Sydney_Demand_Data path = "../data/1h_data_new3.csv" data = Load_Sydney_Demand_Data(path) print(data.shape) X, Y = Add_Window_Horizon(data, horizon=2) print(X.shape, Y.shape)