-0.589469,5.000059,-0.480721,0.000204,0.000204
-12.945284,4.999956,9.671936,0.000145,0.000145
-9.701032,1.199940,6.882448,3.400034,3.400034
-13.222972,6.900084,10.320272,0.799982,0.799982
一般在我们进行机器学习的时候,两个非常重要的就是1、矩阵;2、数据类型,但是不幸的是有时候自己处理的数据是string类型,但是计算的时候需要转换为float类型,甚至需要转换为矩阵(此处不介绍)
读取文件信息:
train_data = np.loadtxt("Data/Train_1.csv", delimiter=',', dtype=np.str)
读取后发现loadtxt是str类型,得计算啊,准换类型
于是,直接将数据读取后采用强制类型转换,a = float(str),结果发现自己被强了,尴尬。。。。。。
错误显示。。。。
Traceback (most recent call last):
File "C:/Users/JZ/PycharmProjects/Test/test.py", line 4, in <module>
data1=np.loadtxt("Train.csv", delimiter=',')
File "C:\Users\JZ\AppData\Local\Programs\Python\Python35\lib\site-packages\numpy\lib\npyio.py", line 1024, in loadtxt
return float(x)
ValueError: could not convert string to float:
纠结了一会,发现一直没有解决,于是看了numpy的数据类型转换,[
点击打开链接
]因为后期需要转换矩阵,就顺带学了
import numpy as np
var1 = np.float64(var)
var2 = np.float64(var)
突然发现问题解决了,突然发现有时候思路很重要,并不是一味的死钻。
接下来就是将数据保存到文件中
此处使用
str = '%f%f\n' %(var1,var2)
而不是
:str = var1+","+var2+"\n"
好了,至此废话不多说,上代码:
import numpy as np
fr = open("Train.csv",'r')
frw = open("Train_1.csv",'w')
line = fr.readlines()
for L in line:
string = L.strip("\n").split(",")
a = np.float64(string[0])
b = np.float64(string[1])
c = np.float64(string[2])
d = np.float64(string[3])
e = np.float64(string[4])
str = '%f,%f,%f,%f,%f\n' % (a,b,c,d,e)
print(str)
frw.write(str)
frw.close()
fr.close()
NumPy可以使用
load
txt
()方法直接将
txt
文本文件加载成数组,今天加载一个文本格式的点云文件时提示如下错误:
import numpy as np
file=r""
data=np.
load
txt
(file)
应该是某一行数据中有文本字符,NumPy加载时无法
转换
为浮点型的数据,但是错误信息只提示了是103.0这个数据,没有提示在哪一行,我的这个点云文件总共有348570行,显然手动去找哪一行的数据有问题不太现实,最终用了如下办法定位到文本中错误的行数,
import numpy as np
背景:
load
txt
报错
ValueError
: could not
convert
string
to
float
: ‘D00002’
load
txt
() 是numpy中用来读取
txt
文件的函数,其用法为:
numpy.
load
txt
(fname, dtype=, comments='#', delimiter=None,
convert
ers=None, skiprows=0, usecols=None, unpack=False, ndmin=0)
fname:文件名
dtype:生成数据的数据类型,默认是浮点数
当要读取的文件既有数据又有字符串时,把生成数据的数据类型转为字符串,即 d
多年的Python编程和机器学习实践,使我深入理解了这些技术的核心原理,并能够在实际项目中灵活应用。我坚信知识的力量,希望通过我的分享,能够帮助更多的人掌握这些技术,并在实际项目中发挥作用。是一个功能强大且易于使用的函数,它为我们提供了一种便捷的方式来读取和处理文本文件中的数据。在数据分析和机器学习的项目中,我们经常需要从各种来源获取数据,其中文本文件是最常见的格式之一。的一个更通用的版本,它提供了更多的选项和灵活性,可以处理更复杂的文本文件。在选择使用哪个函数时,需要根据具体的需求和文件的特点来决定。
python np.
load
txt
()
读取数据
集时报错
ValueError
: could not
convert
string
to
float
以及pandas.readcsv()对比
4、常见的两种读取csv文件方式
读以下两篇文章即可:《numpy中
load
txt
的用法及参数说明》《pandas中read_csv详解》1、注意numpy中
load
txt
()和pandas中read_csv()不一样!!!前者需要指定分隔符,不然就会读一整行。且返回的就是一个ndarray了后者可以
在处理SICK数据集的时候,为了方便实验我切分成了train集和test集。特别坑!
针对数据集是
txt
的,我
转换
成了csv格式(用python转的,代码csdn上特别多),并且特别注意了encoding用的utf-8,但有时候你一用记事本或者notepad++打开它就变成了ANSI编码,如果你把ANSI格式的读进去,会直接报utf-8的错。
处理方法:
1、用记事本或者
numpy.
load
txt
(fname, dtype=, comments='#', delimiter=None,
convert
ers=None,
skiprows=0, usecols=None, unpack=False, ndmin=0)
作用:从文本文件加载数据,文本文件中的每一行必须具有相同数量的值。
各个参数的作用:
fname:file or str 要读取的文件或文件名。如果文件扩展名为.gz或.bz2,则文件先解压。
dtype:数据类型,可选
data = np.
load
txt
(file_path)
对文件中的数据进行读取时,报错
ValueError
: could not
convert
string
to
float
: '-1.8,'
看报错描述以为是数据中含有负数的问题,改了半天没有什么好的解决办法
最终的解决措施:加delimiter=','
data = np.
load
txt
(file_path, delimiter=.
OM=np.array(om.tolist())
但是,有时候进行新实验,又报出了could not
convert
string
to
float
的错误,后经过修改,发现原因,我的urlOM是csv格式文件,但是是从
txt
直接改后缀得来的。
正确的做法是:
excel打开
txt
,另存为csv,
一定要另存为
使用
float
()函数来
转换
字符串为浮点数是,python抛出
ValueError
,并提示,could not
convert
string
to
float
,意思是无法将参数指定的字符串
转换
为浮点数
float
类型的值,这是为什么呢?这是因为能够被
float
()函数
转换
的字符串需要满足数值型的字符串,比如“1.2”、“3”、“-1.01”等等。python中,可以使用内置的
float
()函数将字符串
string
对象作为形参进行类型的
转换
,并以浮点数的类型值返回,并不修改原字符串
string
对象。