python读取txt,将string转float的三种方法
python读取txt,将string转float的三种方法
方法一:
import numpy as np
data_file = 'iris.txt'#你的数据集.txt文件
def get_dataset(data_file):
with open(data_file,'r') as in_file:
txt = in_file.readlines()#将数据集以字符串列表的形式放在txt里面['1.2 3 4\n','1 2
#3\n']
txt = [txt[i].split(' ') for x in range(len(txt))]#将字符串txt[i](['1.2 3 4\n','1
#2 3\n'])转化为[['1.2','2','3','\n'],['1','2','3','\n']]
txt = [txt[i].strip('[\n,\t]') for i in range(len(txt))]#去掉字符串不能转换为float的
#特殊字符--->[['1.2','2','3'],['1','2','3']]
for i in range(len(txt)): #数据集长度(样本个数)
for j in range(len(txt[0])):#样本特征数(因为每一个样本一般取同样数目特征数,所以可以用
#txt[0]代替任意长度)
txt[i][j] = float(txt[i][j])
return txt
方法二:
#法二:用map的方法转
def get_dataset(data_file):
with open(data_file,'r') as in_file:
txt = in_file.readlines()#read()返回字符串 readline()读一行,返回字符串 readlines()
# 全部读,返回字符串列表,含有\n
for i in range(len(txt)):
txt[i] = list(map(float, filter(None,re.split('[\t \n]', txt[i].strip()))))#这
#一行和后面注释的两行等价
print(txt)
#txt_list = re.split('[\t \n]', txt.strip())
#txt_out = list(map(float, txt_list)) # 高效的map ,# 这一步的list极其重要,否则得到的
#只是一个map对像
方法三:
#法三:用read()读取数据+map的方法转:
def get_dataset(data_file):
in_file = open(data_file, mode='r')
txt = in_file.read() #.split('\n').split('\t')
txt_list = re.split('[\t \n]', txt.strip())
txt_out = map(float, txt_list) # 高效的map
print(list(txt_out)) # 这一步的list极其重要,否则得到的只是一个map对像
方法三和方法一、二返回的数据类型不一样,方法一、二是把每个数据集的特征分别放在一个list里面,再用一个大的list装所有数据集,这样就成了一个二维的数组,而方法三就是用read()的方法,将所有的数据集的特征放在一个list里面,没有区分特征属于哪一类。
运行结果如下:
方法一结果:
方法二结果:
方法三结果:
最新文章
- 理解java中的反射
- bmp位图的格式
- KMP模式匹配算法
- 虚拟机LINUX系统下安装JKD(附详细操作过程截图)
- Linux之jkd、tomcat、mysql安装
- 【L自o用】
- Web过滤器:Filter
- 安装和配置NFS服务器
- 测试种类大汇总(45类)
- 傅里叶变换(真正的通俗易懂)
- 好玩的横版射击游戏介绍:Broforce武装原型 for mac
- 计算机专业英语积累(包括前端和后端常用的)~持续更新
- 文本数据分析:删除停用词
- MVC设计模式的总结
- 代码: 0x80131500:应用商店打不开
- 无限法则服务器错误代码,电脑打个无限法则没事儿重启,看系统管理器。提示如图错误代码,发现看不懂...
- 程序员应该学习如何学习
- 【物体检测快速入门系列
- 各个数据库的空间函数
- PVE安装ros系统