248 lines
8.4 KiB
Python
248 lines
8.4 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(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)
|