from matplotlib import numpy import matplotlib.pyplot as plot import numpy as np import tensorflow as tf import os ''' 这是一个处理data的类 作用是将后缀为.dat的文件按节点个数(head)解析为可用的十进制文件 需要传入的参数有: head:节点头数 int类型 filename:放置.dat文件的根路径 string类型 ''' class DataDeal(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)] for filename in Z: with open(filename, 'rb') as f: # 解析为16进制数据 bs = ['{:0>2X}'.format(x) for x in f.read()] # 将每一个数据分别转化为10进制数据,并存入voiceArray for x in bs: # print(x) x = int(x, 16) self.voiceArray.append(x) # 将voiceArray转化为np的数组 data = np.array(self.voiceArray) print(data.shape) # 创建一个二维空数组 data_true = [[] for i in range(self.head)] # 数据按节点个数分成head个分别存入二维空数组的各行 for i in range(self.head): data_true[i] = data[i::self.head] # 将二维空数组重新整合成np.array的形式 data_true = np.array(data_true) z = 0 if z % 12 == 0 or z % 12 == 1 or z % 12 == 2 or z % 12 == 3: sum0 = np.hstack((sum0, data_true)) if z % 12 == 4 or z % 12 == 6 or z % 12 == 7 or z % 12 == 5: sum1 = np.hstack((sum1, data_true)) if z % 12 == 9 or z % 12 == 10 or z % 12 == 11 or z % 12 == 8: sum2 = np.hstack((sum2, data_true)) z=z+1 #sum0 = np.array(sum0) #sum1 = np.array(sum1) #sum2 = np.array(sum2) print(sum0) print(sum1) print(sum2) return sum0, sum1, sum2 if __name__ == '__main__': data0= DataDeal(9, 'E:\data\DDS_data\平行齿轮箱齿轮齿根裂纹故障恒速\DATA') print(data0(9, 'E:\data\DDS_data\平行齿轮箱齿轮齿根裂纹故障恒速\DATA')) ''' data0 = np.array(data0) data1 = np.array(data1) data2 = np.array(data2) print(data0.shape) print(data1.shape) print(data2.shape)''' ''' # 读取文件 filename = r'E:\data\DDS_data\平行齿轮箱齿轮表面磨损故障恒速\DATA\dds测试故障库4.6#0001.dat' with open(filename, 'rb') as f: # 解析为16进制数据 bs = ['{:0>2X}'.format(x) for x in f.read()] # 将每一个数据分别转化为10进制数据,并存入voiceArray for x in bs: # print(x) x = int(x, 16) voiceArray.append(x) # 将voiceArray转化为np的数组 data = np.array(voiceArray) print(data.shape) # 创建一个二维空数组 data_true = [[] for i in range(9)] # 数据按节点个数分成head个分别存入二维空数组的各行 for i in range(9): data_true[i] = data[i::9] # 将二维空数组重新整合成np.array的形式 data_true = np.array(data_true) print(data_true) '''