如何迭代地从文本文件中提取列以放入2D数组



我有一组几百个2D文本文件,每个文件有37列(每个列有一个特定的数量,例如时间、质量、质量等),但行长度不同。我想从每个文本文件中提取一个特定的列到一个数组中,这样它就包含了所有文本文件的数据,比如每个文本文件的第一列到一个数组中。

文件的名称如下:

"Disc_001_25451941.txt","Disc_002_07305488.txt",...,"Disc_140_06782432.txt">

首先,我对文件名进行了排序,这样我就知道文件在idisc_data数组中的显示方式。我尝试使用以下代码从每个文本文件中提取第一列到一个2D数组:

import numpy as np
import matplotlib.pyplot as plt
from glob import glob
import re
filenames_discs = glob('~/Disc_*.txt')
#utime=4.703706983e05
def tryint(s):
try:
return int(s)
except ValueError:
return s
def alphanum_key(s):
return [tryint(c) for c in re.split('([0-9]+)', s)]
def sort_nicely(l):
return sorted(l, key=alphanum_key)
filenames_discs=sort_nicely(filenames_discs)
gt=[]
for i in range(len(filenames_discs)):
idisc_data = np.loadtxt(filenames_discs[i])
gt[:,i] = idisc_data[:,0]

这会导致错误TypeError: list indices must be integers or slices, not tuple。我如何修复这个错误,或者什么是提取每列放入二维数组的正确方法。

找到了一个围绕创建3D数组的工作,更好的imo

alist = []
for f in filenames_discs:
alist.append(np.loadtxt(f))
arr = np.array(alist,dtype=object)
print(arr[1][0,0])
print(arr.shape)    

,其中arr是所有磁盘数据的数组。