156 lines
5.6 KiB
Python
156 lines
5.6 KiB
Python
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(k.shape[0]//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]
|
||
|
||
data_true = np.array(data_true)
|
||
# 将二维空数组重新整合成np.array的形式
|
||
data_true = data_true[1]
|
||
data_true = np.array(data_true)
|
||
# 创建一个二维空数组
|
||
data_true_new=[[] for i in range(data_true.shape[0]//4096)]
|
||
for i in range(data_true.shape[0]//4096):
|
||
data_true_new[i] = data_true[i::data_true.shape[0]//4096]
|
||
# 如果第一次是空数剧,则无法进行拼接
|
||
if z == 0:
|
||
sum = data_true_new
|
||
data_true_new = np.array(data_true_new)
|
||
# print(data_true_new.shape)
|
||
if z != 0:
|
||
sum = np.vstack((sum, data_true_new))
|
||
z = z + 1
|
||
|
||
sum = np.array(sum)
|
||
print("sum:", sum.shape)
|
||
return sum
|
||
|
||
|
||
if __name__ == '__main__':
|
||
data0 = DataDeal2(9, 'E:\data\DDS_data\平行齿轮箱齿轮齿根裂纹故障恒速\DATA')
|
||
data = np.array(data0(9, 'E:\data\DDS_data\平行齿轮箱齿轮齿根裂纹故障恒速\DATA'))
|
||
print("data:", data.shape)
|