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

  • Post author:
  • Post category:其他


实验数据样式: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),结果发现自己被强了,尴尬。。。。。。

错误显示。。。。

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()



版权声明:本文为gsww404原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。