Python:如何将包含行-列格式坐标的文本文件读入x-y坐标数组?

Python:如何将包含行-列格式坐标的文本文件读入x-y坐标数组?,python,coordinates,Python,Coordinates,我有一个文本文件,其中的数字以以下格式存储: 1.2378 4.5645 6.789 9.01234 123.43434 -121.0212 。。。等等 我希望将这些值读入两个数组,一个用于x坐标,另一个用于y坐标。像这样 x[0] = 1.2378 y[0] = 4.5645 x[1] = 6.789 y[1] = 9.01234 。。。等等 如何读取文本文件并存储值?每行读取一次,然后使用split将其拆分: with open('f.txt') as f: for l

我有一个文本文件,其中的数字以以下格式存储:

1.2378 4.5645

6.789 9.01234

123.43434 -121.0212
。。。等等

我希望将这些值读入两个数组,一个用于x坐标,另一个用于y坐标。像这样

x[0] = 1.2378

y[0] = 4.5645

x[1] = 6.789

y[1] = 9.01234
。。。等等


如何读取文本文件并存储值?

每行读取一次,然后使用
split
将其拆分:

with open('f.txt') as f:
    for line in f:
        x, y = line.split()
        #do something meaningful with x and y
或者,如果您不介意将整个列表存储到计算机内存中:

with open('f.txt') as f:
    coordinates = [(c for c in line.split()) for line in f]
如果要将
x
s和
y
s存储在单独的变量中:

xes = []
ys = []
with open('f.txt') as f:
     for line in f:
         x, y = line.split()
         xes.append(x)
         ys.append(y)
一种方法:

x,y = [], []
for l in f:
    row = l.split()
    x.append(row[0])
    y.append(row[1])
其中f是文件对象(例如,从open()开始)

您也可以使用csv库

import csv
with open('filename','r') as f:
    reader = csv.reader(f,delimeter=' ')
    for row in reader:
        x.append(row[0])
        y.append(row[1])
您还可以使用zip使其更加简洁(尽管可能不太可读:

x,y = zip(*[l.split() for l in f])
其中f是文件对象,或

import csv
x,y = zip(*csv.reader(f,delimeter=' '))

同样,f是文件对象。不是说最后两个方法会将整个文件加载到内存中(尽管如果您使用的是python 3,您可以使用生成器表达式并避免这种情况).

我是Python新手。您的第一个方法会创建两个分别包含x和y余字的单独的一维数组吗?第一个方法只是将x和y存储到变量中,然后您需要对变量进行处理才能将它们存储到数组中,第三个方法就是这样做的。@user3128217正如Thayne提到的,第一个方法将x和y存储到一个临时变量中可在循环中运行。第二个变量将两者存储在一个变量中,第三个变量将它们全部映射到
x
y
。请显示您尝试使用FWIW读取和解析文件的代码,您最好使用一个对象列表,其中这些对象具有属性x和y。并行列表是可行的,但它们往往会导致p随着时间的推移会出现问题。这取决于应用程序,许多数值库使用平行列表。例如,matplotlib对x和y坐标使用单独的列表。如果对多组y坐标使用一组x坐标,例如将模型拟合到经验数据时,内存效率也会更高。谢谢,第一个我方法有效!我能够完美地解析文件。