我有一个如下所示的file.dat:
0.00000000000000000000 0.00000000000000000000 0.00000000000000000000
1.02072021799999990144 0.58931309249999996869 0.01464322176999999919
1.04801084399999999697 0.60506934300000003724 0.02121744689000000170
1.11938267900000010258 0.64627589110000005501 0.03132390833999999791
1.23483727700000001093 0.71293363409999999103 0.03462252470999999804
1.36316318200000008432 0.78702263009999995358 0.02774525518999999829
1.44821317199999999303 0.83612626459999994655 0.01540671738000000054
我想创建3个变量x,y,z,以便x将是第一列的数组,y是第二列的数组,z是第三列的数组。我尝试了以下方法:
with open('filename') as f:
file = f.read()
x = [row.split(' ')[0] for row in data]
y = [row.split(' ')[1] for row in data]
z = [row.split(' ')[2] for row in data]
但是,这不起作用,并且会出现错误。有任何简单的方法可以执行此操作吗?
首先,您可以使用一种更加Python化的方式numpy.genfromtxt
将您的文本读取为数组,然后通过转置数组来获取列:
import numpy as np
with open('text.dat') as f:
array = np.genfromtxt(f)
x,y,z = array.T
关于代码,不清楚是什么data
,无论如何,如果要循环文件的行,则需要简单地循环文件对象:
x = []
y = []
z = []
with open('filename') as f:
for line in f:
i,j,k = line.split()
x .append(i)
y .append(j)
z .append(k)
或者作为一种更优雅的方法,使用zip()
函数来获取列:
with open('text.dat') as f:
x, y, z = zip(*[line.split() for line in f])
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句