我有一个外部文件,它是一列浮点数(希望能够将其扩展为将来有多个列)。我想将它导入数组。该文件是一个cvs文件,但它也可以是一个txt文件。
我正在使用:
reader = csv.reader(open("e=0.6.csv"))
table = []
for row in reader:
values = []
for col in row:
values.append(float(col))
table.aapend(values)
结果是一个列表[[1.0], [0.98], ......]
我想将List转换为数字数组(1.0, 0.98, ...)
我怎么能这样做?
答案 0 :(得分:2)
reader = csv.reader(open("e=0.6.csv"))
table = tuple(float(col) for row in reader for col in row)
答案 1 :(得分:1)
为什么要创建一个名为values的新列表?为什么不附加到表格呢?即。
reader = csv.reader(open("e=0.6.csv"))
table = []
for row in reader:
for col in row:
table.append(float(col))
答案 2 :(得分:1)
(1.0, 0.98, ...)
是元组。这是从中创建元组的一种方法:
>>> l = [[1.0], [0.98]]
>>> tuple(i[0] for i in l)
(1.0, 0.97999999999999998)
答案 3 :(得分:0)
在您的具体情况下,我会跳过此步骤并执行以下操作:
reader = csv.reader(open("e=0.6.csv"))
table = [float(col) for col in row for row in reader]
但是,如果您想使用原始答案,可以这样做:
使用map method:
>>> l = [[1.0], [0.98], [3.0]]
>>> map(lambda x: x[0], l)
[1.0, 0.97999999999999998, 3.0]
或列表理解:
>>> [e for subl in l for e in subl]
[1.0, 0.97999999999999998, 3.0]
在任何一种情况下,只需执行tuple(result)
答案 4 :(得分:0)
reader = csv.reader(open("e=0.6.csv"))
table = []
for row in reader:
for col in row:
table.aapend(float(col))
答案 5 :(得分:0)
使用列表理解:
>>> l = [[0.1], [0.2], [0.3]]
>>> [x[0] for x in l]
[0.1, 0.2, 0.3]
或地图功能:
>>> map(lambda x:x[0], l)
[0.1, 0.2, 0.3]
或者还原功能:
>>> reduce(lambda x,y: x+y, l, [])
[0.1, 0.2, 0.3]
或发电机:
>>> (x[0] for x in l)
<generator object <genexpr> at 0x1004e00f0>
或者只是将您的号码直接存储在列表中。
答案 6 :(得分:0)
我不明白为什么你在这种情况下使用csv.reader
。你说自己,这不是一个真正的csv!只做两个:
map(float, open("e=0.6.csv").readlines())
或
[float(x) for x in open("e=0.6.csv").readlines()]