self_example/TensorFlow_eaxmple/datadeal_try/data_deal.py

113 lines
3.9 KiB
Python
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

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)
'''