如何解决如何从文本文件中迭代提取一列以放入二维数组
我有一组几百个 2D 文本文件,每个文件有 37 列(每个用于特定数量,例如时间、质量、ang mom 等),但行长不同。我想从每个文本文件中提取一个特定的列到一个数组中,以便它包含所有文本文件的数据,比如每个文本文件的第一列到一个数组中。
文件采用如下名称:
'Disc_001_25451941.txt','光盘_002_07305488.txt',. . .,'光盘_140_06782432.txt'
首先,我对文件名进行了排序,因此我知道文件将如何出现在 idisc_data 数组中。我尝试使用以下代码将每个文本文件中的第一列提取到一个二维数组中:
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 是所有磁盘数据的数组。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。