python - 将文本表转换为2D列表

时间:2013-05-23 19:44:12

标签: python list 2d

所以我有一个平板阅读器,只会将结果输出到像这样的纯文本文件

  1       2       3       4       5       6       7       8       9      10         
A   1.551   0.686   0.613   3.823   1.356   3.117   1.941   1.454   0.820   3.346   
B   3.811   3.403   3.782   3.811   3.474   3.811   3.811   3.811   0.396   0.378   
C   1.278   3.816   3.816   3.816   3.766   3.816   3.329   3.816   1.625   3.816  
D   1.354   1.689   1.182   3.819   3.819   1.241   1.099   2.826   1.780   2.018   
E   3.816   1.970   3.807   3.816   3.489   0.407   3.816   3.816   3.030   2.663   
F   3.622   1.080   0.846   0.574   3.169   2.313   1.113   1.166   1.567   1.983  
G   0.782   2.101   1.681   0.494   1.865   1.920   1.819   1.183   0.770   1.686  
H   2.561   1.046   2.009   2.410   0.751   3.814   2.703   0.799   1.935   3.814 

我正在尝试编写代码,将表中的浮点数读入2D列表然后进行操作。我可以轻松编写操作部分的代码,但我无法将数据导入列表。主要问题是2种不同的变量类型。到目前为止,我有:

import numpy as np
local = input ("enter the file location: ")
data = [np.array(map(int, line.split())) for line in open(local)]

1 个答案:

答案 0 :(得分:2)

你的解决方案很接近。第一行只是列索引,因此您可以跳过它。第一列是行索引,也可以跳过。您的数据为float,而不是int

此外,使用上下文管理器来管理您的资源,使用with语句,文件会自动关闭。在短剧中可能没有什么区别,但这是一个很好的习惯。

import numpy as np
local = input ("enter the file location: ")
with open(local) as f:
    f.readline()  #  skip column indices
    data = [np.array(map(float, line.split()[1:])) for line in f]