self_example/TensorFlow_eaxmple/Model_train_test/datadeal/loadData.py

248 lines
8.4 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.

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
class DataDeal3(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]
if z==0:
print(data_true)
# 将二维空数组重新整合成np.array的形式
data_true = np.array(data_true)
data_new = np.expand_dims(data_true, axis=0)
if z == 0:
sum = np.expand_dims(sum, axis=0)
else:
sum = np.vstack((sum, data_new))
z = z + 1
sum = np.array(sum)
print("sum:", sum.shape)
return sum
class DataDeal4(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)
(dims,)=data.shape
# 数据按节点个数分成head个分别存入二维空数组的各行
data=np.reshape(data,[self.head,int(dims/self.head)])
data_new = np.expand_dims(data, axis=0)
if z == 0:
sum = data_new
else:
sum = np.vstack((sum, data_new))
z = z + 1
sum = np.array(sum)
print("sum:", sum.shape)
return sum
if __name__ == '__main__':
data0 = DataDeal4(9, 'E:\data\DDS_data\平行齿轮箱齿轮表面磨损故障恒速\DATA')
data = np.array(data0(9, 'E:\data\DDS_data\平行齿轮箱齿轮表面磨损故障恒速\DATA'))
print(data)
# a = np.array([[1, 2,5], [3, 4,7]])
# print(a)
# b=np.expand_dims(a,axis=0)
# print(b)
# b=np.transpose(b,[0,2,1])
# print(b)