【发布时间】:2013-06-09 09:31:01
【问题描述】:
所以我在一个文件中有一个示例数据,它是这样安排的:
u v w p
100 200 300 400
101 201 301 401
102 202 302 402
103 203 303 403
104 204 304 404
105 205 305 405
106 206 306 406
107 207 307 407
现在我想读取第 1 列并将其保存到列表 'u' 中,将第 2 列保存到列表 'v' 中,以此类推,直到 'p' 为止。 这是我目前所拥有的:
import numpy as np
u = []
v = []
w = []
p = []
with open('testdata.dat') as f:
for line in f:
for x in line.split():
u.append([int(x)])
v.append([int(x)+1])
w.append([int(x)+2])
p.append([int(x)+3])
print 'u is'
print(u)
print 'v is'
print(v)
print 'w is'
print(w)
print 'p is'
print(p)
我尝试过改变索引,但显然这是错误的,因为我得到了输出
u is
[[100], [200], [300], [400], [101], [201], [301], [401], [102], [202], [302],
[402], [103], [203], [303], [403], [104], [204], [304], [404], [105], [205],
[305], [405], [106], [206], [306], [406], [107], [207], [307], [407]]
v is
[[101], [201], [301], [401], [102], [202], [302], [402], [103], [203], [303],
[403], [104], [204], [304], [404], [105], [205], [305], [405], [106], [206],
[306], [406], [107], [207], [307], [407], [108], [208], [308], [408]]
w is
[[102], [202], [302], [402], [103], [203], [303], [403], [104], [204], [304],
[404], [105], [205], [305], [405], [106], [206], [306], [406], [107], [207],
[307], [407], [108], [208], [308], [408], [109], [209], [309], [409]]
p is
[[103], [203], [303], [403], [104], [204], [304], [404], [105], [205], [305],
[405], [106], [206], [306], [406], [107], [207], [307], [407], [108], [208],
[308], [408], [109], [209], [309], [409], [110], [210], [310], [410]]
它只是按索引增加行号并读取整行,而我想要 每列的数据写入一个单独的变量,即对应于样本数据中给出的名称 - u = 100 --> 107, v = 200 --> 207 等。
关于如何在 Python 中执行此操作的任何想法? (我必须以迭代的方式对非常大数据集执行此操作,因此快速高效的代码将大有裨益)
【问题讨论】:
-
我不明白你如何处理数据标题行?
-
我没有在代码中提到它,但是我可以跳过第一行被阅读。我把那个标题让其他人理解我的数据意味着什么。对不起,如果这让你感到困惑..
-
你的数据集有多大?
-
我会有 7 - 8 列,每列至少有 8000 - 10000 个数字。我必须在我正在运行的数值模拟代码的每次迭代中执行此操作。
-
要将各种实现与您的真实数据集进行比较,您可以使用
timeit。如果你分享你的结果会很酷!
标签: python file-io python-2.7