我有一个 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]
但是,这不起作用并且会报错。有没有简单易行的方法来执行此操作?
请您参考如下方法:
首先,作为一种更 pythonic 的方式,您可以使用 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])
