loadtxt()读取数据类型转换/string转换float/ValueError: could not convert string to float:

转载:https://blog.csdn.net/gsww404/article/details/78254941

实验数据样式:Test.csv(只显示几行)

-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),结果发现自己被强了,尴尬。。。。。。

错误显示。。。。


[plain]  view plain  copy
  1. Traceback (most recent call last):  
  2.   File "C:/Users/JZ/PycharmProjects/Test/test.py", line 4, in <module>  
  3.     data1=np.loadtxt("Train.csv", delimiter=',')  
  4.   File "C:\Users\JZ\AppData\Local\Programs\Python\Python35\lib\site-packages\numpy\lib\npyio.py", line 1024, in loadtxt  
  5.     return float(x)  
  6. ValueError: could not convert string to float:   

纠结了一会,发现一直没有解决,于是看了numpy的数据类型转换,[点击打开链接]因为后期需要转换矩阵,就顺带学了

[python]  view plain  copy
  1. import numpy as np  
  2. var1 = np.float64(var)  
  3. var2 = np.float64(var)  

突然发现问题解决了,突然发现有时候思路很重要,并不是一味的死钻。

接下来就是将数据保存到文件中

此处使用  str = '%f%f\n' %(var1,var2) 

而不是:str = var1+","+var2+"\n"


好了,至此废话不多说,上代码:

[python]  view plain  copy
  1. import numpy as np  
  2.   
  3. fr = open("Train.csv",'r')  
  4. frw = open("Train_1.csv",'w')  
  5.   
  6. line = fr.readlines()  
  7. for L in line:  
  8.     string = L.strip("\n").split(",")  
  9.     a = np.float64(string[0])  
  10.     b = np.float64(string[1])  
  11.     c = np.float64(string[2])  
  12.     d = np.float64(string[3])  
  13.     e = np.float64(string[4])  
  14.   
  15.     str = '%f,%f,%f,%f,%f\n' % (a,b,c,d,e)  
  16.     print(str)  
  17.     frw.write(str)  
  18. frw.close()  
  19. fr.close()  

猜你喜欢

转载自blog.csdn.net/m0_37870649/article/details/80761825