Python将多个.txt文件读入3D数组

时间:2018-06-14 00:03:32

标签: file

enter image description here

我有大约这样的~8000个.txt文件,每个文件有大约200行数据(每行不同),有两行标题。

我想读掉这些数字。 我试图将文件保存在1个3D数组中,1个索引对应于文件编号,其他2个索引是每个文件的2D数据数组,但我是python中的新手所以不知道该怎么做。 (实际上它不需要是3D数组,但我不知道如何制作2D数组列表) 我在这里搜索并尝试了类似的东西

import glob
import numpy as np
file_list = glob.glob('data/*.txt')
data = []
for file_path in file_list:
    data.append(
        np.genfromtxt(file_path, delimiter=' ', skip_header=2))

但这会发出这样的错误,

第#184行(有41列而不是42列)

所以我猜每个文件应该有相同的行号来应用它。

我也试过这样的东西,从一个文件制作2D数组的扩展版本。

import numpy as np
import glob
list=glob.glob('data/*.txt')
i=0
for file_name in list:
    f0=open(file_name,'r')
    header1,header2=[],[]
    header1.append(f0.readline())
    header2.append(f0.readline())
    time, x,y,z,px,py,pz=[],[],[],[],[],[],[]
    for line in f0:
        line=line.strip()
        columns=line.split()
        time[i].append(float(columns[0]))
        x[i].append(float(columns[1]))
        y[i].append(float(columns[2]))
        z[i].append(float(columns[3]))
        px[i].append(float(columns[4]))
        py[i].append(float(columns[5]))
        pz[i].append(float(columns[6]))
    i+=1

但这会使'列表索引超出范围'错误。我猜这与维度有关,但不确定如何解决这个问题。

还有其他方法可以做到这一点,还是解决这个问题的方法?

0 个答案:

没有答案