import numpy as np import os import tensorflow as tf ''' class DataDeal1: 这是一个处理data的类 使用示例:DataDeal1(9, 'E:\data\DDS_data\平行齿轮箱齿轮齿根裂纹故障恒速\DATA') 作用是将后缀为.dat的文件按节点个数(head)和加载的点数n的不同解析为(3,108,dim/108)维的文件 需要传入的参数有: head:节点头数 int类型 filename:放置.dat文件的根路径 string类型 ''' class DataDeal1(object): voiceArray = [] def __init__(self, head, filename): self.head = head self.name = filename '''创建一个获取文件夹下所有后缀名为.dat得文件''' L = [] for root, dir, filename in os.walk(self.name): for file in filename: if os.path.splitext(file)[1] == '.dat': L.append(file) self.array = L def __call__(self, head, filename, **kwargs): k = np.array(self.array) result = [[[] * self.head] * k.shape[0]] Z = [] for file in self.array: # 构建文件名 filename = self.name + '/' + file Z.append(filename) sum0 = [[] for i in range(self.head)] sum1 = [[] for i in range(self.head)] sum2 = [[] for i in range(self.head)] '''sum0=[None]*self.head sum1 = [None] * self.head sum2 = [None] * self.head for i in range(self.head): sum0[i] = [0]* 204800 sum1[i] = [0]* 204800 sum2[i] = [0]* 204800''' z = 0 for filename in Z: # 将二进制文件读成np数组 each_data = np.fromfile(filename, dtype=np.float32) data = np.array(each_data) # 创建一个二维空数组 data_true = [[] for i in range(self.head)] # 数据按节点个数分成head个分别存入二维空数组的各行 for i in range(self.head): data_true[i] = data[i::self.head] # 如果第一次是空数剧,则无法进行拼接 if z == 0: sum0[i] = data_true[i] if z == 4: sum1[i] = data_true[i] if z == 8: sum2[i] = data_true[i] # 将二维空数组重新整合成np.array的形式 data_true = np.array(data_true) if z % 12 == 0 or z % 12 == 1 or z % 12 == 2 or z % 12 == 3: if z != 0: sum0 = np.vstack((sum0, data_true)) if z % 12 == 4 or z % 12 == 6 or z % 12 == 7 or z % 12 == 5: if z != 4: sum1 = np.vstack((sum1, data_true)) if z % 12 == 9 or z % 12 == 10 or z % 12 == 11 or z % 12 == 8: if z != 8: sum2 = np.vstack((sum2, data_true)) z = z + 1 sum0 = np.array(sum0) sum1 = np.array(sum1) sum2 = np.array(sum2) print("sum0:", sum0.shape) print("sum1:", sum1.shape) print("sum2:", sum2.shape) return sum0, sum1, sum2 ''' class DataDeal2: 这是一个处理data的类 使用示例:DataDeal2(9, 'E:\data\DDS_data\平行齿轮箱齿轮齿根裂纹故障恒速\DATA') 作用是将后缀为.dat的文件按节点个数(head)解析为(3*108,dim/108)维的文件 需要传入的参数有: head:节点头数 int类型 filename:放置.dat文件的根路径 string类型 ''' class DataDeal2(object): voiceArray = [] def __init__(self, head, filename): self.head = head self.name = filename '''创建一个获取文件夹下所有后缀名为.dat得文件''' L = [] for root, dir, filename in os.walk(self.name): for file in filename: if os.path.splitext(file)[1] == '.dat': L.append(file) self.array = L def __call__(self, head, filename, **kwargs): k = np.array(self.array) Z = [] for file in self.array: # 构建文件名 filename = self.name + '/' + file Z.append(filename) sum = [[] for i in range(self.head)] z = 0 for filename in Z: # 将二进制文件读成np数组 each_data = np.fromfile(filename, dtype=np.float32) data = np.array(each_data) # 创建一个二维空数组 data_true = [[] for i in range(self.head)] # 数据按节点个数分成head个分别存入二维空数组的各行 for i in range(self.head): data_true[i] = data[i::self.head] # 如果第一次是空数剧,则无法进行拼接 if z == 0: sum[i] = data_true[i] # 将二维空数组重新整合成np.array的形式 data_true = np.array(data_true) if z != 0: sum = np.vstack((sum, data_true)) z = z + 1 sum = np.array(sum) print("sum:", sum.shape) return sum