我正在从列表中的文件中读取行:
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数组中的文件中获取输入?
答案 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())))