import numpy as np import torch DataFileName = './DataLib/Data.csv' Data = np.loadtxt(DataFileName, delimiter=',') NumState = 13 NumControl = 3 Data = Data[:, :NumState] # 标准化 DataMax = np.max(Data, axis=0) DataMin = np.min(Data, axis=0) DataNor = 2*(Data-DataMin)/(DataMax-DataMin)-1 DataMaxMin = np.vstack([DataMax, DataMin]) np.savetxt('./DataLib/DataMaxMin.csv', DataMaxMin, delimiter=',') # 数据间隔固定为10s deltat = 100 # 每个sample的长度为51,对应相邻两个时序5000s seqlen = 51 # 数据特征 NumSample = DataNor.shape[0] NumFea = DataNor.shape[1] NumSampleTensor = NumSample - seqlen + 1 print(NumSampleTensor) DataTensor = torch.zeros([NumSampleTensor, seqlen, NumFea]) # print(DataTensor.shape) for iterSample in range(NumSampleTensor): index_start = iterSample index_end = iterSample + seqlen DataThis = DataNor[index_start:index_end, :] DataThisTensor = torch.from_numpy(DataThis) # # print(index_start) # # print(index_end) # # print(DataThis.shape) DataTensor[iterSample, :, :] = DataThisTensor print(iterSample) # 打乱 idx = torch.randperm(DataTensor.size(0)) shuffData = DataTensor[idx] DataFileNameTensor = './DataLib/DataSeqTensor.pt' torch.save(shuffData, DataFileNameTensor)