Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/350.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在python中将大型数据集转换为浮点型_Python_Python 3.x_Loops - Fatal编程技术网

在python中将大型数据集转换为浮点型

在python中将大型数据集转换为浮点型,python,python-3.x,loops,Python,Python 3.x,Loops,我是Python 3和Python的新手。我的任务是编写一个函数,读取一个数据集(plentity.data),然后将该数据转换为float data=[] inFile = open('plenty.data','r') for line in inFile.readlines(): data.append(line) data(float(line)) 我已经成功地编写了读取数据集的代码,但我真的很难将其转换为float data=[] inFile = open('plenty.

我是Python 3和Python的新手。我的任务是编写一个函数,读取一个数据集(plentity.data),然后将该数据转换为float

data=[]
inFile = open('plenty.data','r')
for line in inFile.readlines():
  data.append(line)
  data(float(line))
我已经成功地编写了读取数据集的代码,但我真的很难将其转换为float

data=[]
inFile = open('plenty.data','r')
for line in inFile.readlines():
  data.append(line)
  data(float(line))
这是目前我用来转换为float的方法,但当我运行它时,会收到一条错误消息,上面说

ValueError                                Traceback (most recent call last)
<ipython-input-6-f32b7e41d5ed> in <module>()
      3 for line in inFile.readlines():
      4     data.append(line)
----> 5     data(float(line))
      6 

ValueError: could not convert string to float: '0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 
0.0\n'
ValueError回溯(最近一次调用)
在()
3对于infle.readlines()中的行:
4.追加数据(行)
---->5数据(浮动(线))
6.
ValueError:无法将字符串转换为浮点:“0.0.0.0.0.0.0.0.0.0 0.0.0 0.0”
0.0\n'
我被告知要使用循环,但我仍在为如何做到这一点而挣扎


任何帮助都将不胜感激

不能只将一长串数字转换为浮点数。您的异常显示该行由多个数字组成:

'0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0\n'
接下来,即使这样做有效,表达式
data(float(line))
要求Python将
data
视为函数或类(可调用)。但是,列表对象不可调用

您需要将行拆分为单独的数字,并将这些单独的部分转换为浮点数。如果要将每行文本附加为单独的列表,可以使用:

data.append([float(part) for part in line.split()])
但是,让服务器为您执行此操作更有效,它可以在读取数据和拆分行时将数据转换为浮点:

import csv

with open('plenty.data', 'r', newline='') as plentydata:
    reader = csv.reader(plentydata, delimiter=' ', quoting=csv.QUOTE_NONNUMERIC)
    data = list(reader)
csv读卡器的
quoting=csv.QUOTE_非数字
配置使读卡器输出浮点数

如果您不需要随机访问数据(如果您可以逐行处理数字,并且不需要按索引引用单个行),那么您就不必将整个文件读入内存。只需在读卡器上循环,并根据需要处理每一行:

with open('plenty.data', 'r', newline='') as plentydata:
    reader = csv.reader(plentydata, delimiter=' ', quoting=csv.QUOTE_NONNUMERIC)
    for row in reader:
        # do something with a single row of floats

data(float(line))
尝试将列表对象用作函数。不要追加行,而是追加
float(line)
data.append(float(line))
。啊,你有空格分隔的数字。您希望在此使用
csv
模块,并让它负责为每个列创建浮动。最好使用
numpy
来完成此任务。
QUOTE\u非数字
让读者这样做?哇,谈谈命名不好的常数。开发者在想什么?@martineau:这是一个对称的东西。
quote
配置主要是一个
writer
方言配置选项(其中任何不是数字的内容,特别是浮点数,都放在输出的引号中)。在这里,它被用作该选项的反义词。啊,现在它有意义了。如果你意识到,逻辑(和面)中的对称是美丽的。不过,有一点是不对称的。编写器(毫不奇怪)同时考虑整数和浮点数,不引用它们,但读者只将任何未引用的内容转换为浮点数。不管怎样,我还是有点惊讶地发现,读者能够返回所有字符串以外的序列,尽管这种方式非常有限。@martineau:我希望看到这种方式更具可配置性(a la Pandas
read_csv()
可能,但可能没有高级),我通常不太需要这个选项。但它比必须自己映射行更快(就目前而言,I/O操作可以认为是快速的)且更简单。