【Python】数据降维 (txt | 文件 | 文件夹)

背景

为了匹配下一个环节的输入,需要将手头已有的 n x 3 维的 txt文件转换为 1024 x 3维的数据,n可能比1024大也可能比1024小。大于1024维的数据进行随机采样,小于1024维的数据先复制内容进行扩充到大于1024,然后降维。

代码:

1. 单个文件操作

#!/usr/bin/env python
# -*- coding: utf-8 -*-
import json, os, re
import random
import numpy as np

source_file = 'part0.txt'
result_file = 'part0_new.txt'

if os.path.exists(result_file):
	with open(result_file,"r+") as f:
		f.truncate()
if os.path.isfile(source_file):
	with open(source_file,'r',encoding='UTF-8') as f:
		lines = f.readlines()  # 每行读如数据
		a = []
		print(len(lines))
		for i in lines:
			i = i.replace('\n', '')
			a.append(i)  # 把每一行添加到列表中

		while len(a) < 1024:  # 对小于1024维的数据先复制原有列表进行扩充
			a.extend(a)
		samples = random.sample(a, 1024)  # 对超过1024维的数据,随机抽取行降维到1024
		print(len(samples))

	str = '\n'
	with open(result_file, 'a+', encoding='utf-8') as f1:
		f1.write(str.join(samples))  # 写入
		f1.close()

	print("change compeleted !!!")
else:
	print("文件不存在。。。。")

在这里插入图片描述

2. 文件夹操作

#!/usr/bin/env python
# -*- coding: utf-8 -*-
import json, os, re
import random
import numpy as np

readfile_Path = r"E:\PostGraduate\.Code_item\convert_1024\000_test\test"    # 读取文件路径
savefile_Path = r"E:\PostGraduate\.Code_item\convert_1024\000_test\save\\"  # 保存文件路径
if not os.path.exists(savefile_Path):
	os.mkdir(savefile_Path)		# 如果文件夹不存在则创建文件夹

fileList = os.listdir(readfile_Path)
if os.path.isdir(readfile_Path):
	for file in fileList:
		f = open(os.path.join(readfile_Path, file))
		lines = f.readlines()  # 每行读如数据
		a = []
		print(len(lines))
		for i in lines:
			i = i.replace('\n', '')
			a.append(i)  # 把每一行添加到列表中

		while len(a) < 1024:  # 对小于1024维的数据先复制原有列表进行扩充
			a.extend(a)
		samples = random.sample(a, 1024)  # 对超过1024维的数据,随机抽取行降维到1024
		print(len(samples))

		str = '\n'
		f1 = open(savefile_Path + file, mode='w', encoding='utf-8')
		f1.write(str.join(samples))  # 写入
		f1.close()

		print("change compeleted !!!")

else:
	print("文件夹不存在。。。。")

在这里插入图片描述

参考链接

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值