python - 从 txt 文件创建数组

标签 python arrays text

我是 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/

相关文章:

python - 确定线程何时等待锁释放

python - 使 Python 脚本在 Windows 上运行而不指定 ".py"扩展名

javascript - React 无法读取未定义的属性 'length' 但数组已定义

python - 从每列中排除一个值的较小尺寸的新数组

java - 如何使用java poi更改Excel单元格中的文本方向?

python - 如何使用 rege 从 pandas 数据框中的团队名称中提取城市名称

python - 部分函数调用作为参数python

C++:访问作为函数参数传递的双指针数组指向的变量值

iphone - UILabel 中心内容

jquery - 使用 jquery 替换通配 rune 本