来自文件的numpy数组输入

时间:2016-01-28 23:54:08

标签: python file numpy io

我正在从列表中的文件中读取行:

import numpy as np

lines = tuple(open('values.txt','r'))
x = np.array([line for line in lines])

values.txt看起来像:

[1,0,1,0],
[1,0,0,0]

它会抛出错误:

valueError: invalid literal for float()

但是,如果我只是将列表分配给x,它就可以正常工作。

如何从numpy数组中的文件中获取输入?

3 个答案:

答案 0 :(得分:1)

lines = open('values.txt', 'r')
x = np.array( [  map(float, (l[l.find("[")+1 : l.find("]")].split(",")))
     for l in lines ] )
print x

简要说明:

这将获取文件中的每一行,找到每一侧的括号,并将字符串放在括号内。然后,我们使用逗号作为分隔符将该字符串拆分为数组。然后,我们有一个字符串数组,所以我们将float函数映射到每个元素,并将其转换为浮点数。然后我们使用标准列表理解对每一行执行此操作。

答案 1 :(得分:1)

import numpy as np
import ast

lines = open('values.txt','r')
x = np.array([ast.literal_eval(line.strip(',\n')) for line in lines])

答案 2 :(得分:0)

您可以一次阅读整个文件,只需在将[]应用于所有行之前添加外部literal_eval()

from ast import literal_eval

with open('values.txt') as fobj:
    x = np.array(literal_eval('[{}]'.format(fobj.read())))