gpt4 book ai didi

python - 从 txt 文件创建数组

转载 作者:太空宇宙 更新时间:2023-11-03 13:06:17 25 4
gpt4 key购买 nike

我是 python 的新手,我有一个问题。我有一些测量数据保存在一个 txt 文件中。数据用制表符分隔,结构如下:

0   0   -11.007001  -14.222319  2.336769

每次模拟我总是有 32 个数据点 (0,1,2,...,31),我有 300 次模拟 (0,1,2...,299),所以数据首先用模拟的数量,然后是数据点的数量。

第一列是模拟编号,第二列是数据点编号,另外三列是x,y,z坐标。

我想创建一个三维数组,第一个维度应该是模拟编号,第二个是数据点的编号,第三个是三个坐标。

我已经开始了,这是我目前所拥有的:

## read file
coords = [x.split('\t') for x in
open(f,'r').read().replace('\r','')[:-1].split('\n')]
## extract the information you want
simnum = [int(x[0]) for x in coords]
npts = [int(x[1]) for x in coords]
xyz = array([map(float,x[2:]) for x in coords])

但我不知道如何组合这两个列表和这个数组。

最后我想要这样的东西:

array = [simnum][num_dat_point][xyz]

感谢您的帮助。

我希望你理解我的问题,这是我第一次在 python 论坛上发帖,所以如果我做错了什么,我很抱歉。

再次感谢

最佳答案

您可以将它们与 zip function 结合使用,像这样:

for sim, datapoint, x, y, z in zip(simnum, npts, *xyz):
# do your thing

或者您可以完全避免列表理解,而只是遍历文件的行:

for line in open(fname):
lst = line.split('\t')
sim, datapoint = int(lst[0]), int(lst[1])
x, y, z = [float(i) for i in lst[2:]]
# do your thing

要解析一行,您可以(并且应该)执行以下操作:

coords = [x.split('\t') for x in open(fname)]

关于python - 从 txt 文件创建数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1256099/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com