Python:将多个文件中的数据读入2D numpy数组或列表的方法

Python:将多个文件中的数据读入2D numpy数组或列表的方法,python,arrays,list,numpy,Python,Arrays,List,Numpy,我有n个文件,我想从每个文件中特定行的m个列中读取数据。我想以nbym列表或数组结束,其中列表或数组的每一行都是其中一个文件中的一行。这样做的方法是什么?或者这是最好的方法?我可以定义m不同的列表或数组(每个列表或数组的名称相似,可能只是通过数字索引),但处理几个不同的列表或数组通常比处理一个二维列表或数组更加困难和复杂 例如 file_names = ( "file1" "file2" "file3" "file4" ) # so in this case n is 4 for name in

我有
n
个文件,我想从每个文件中特定行的
m
个列中读取数据。我想以
n
by
m
列表或数组结束,其中列表或数组的每一行都是其中一个文件中的一行。这样做的方法是什么?或者这是最好的方法?我可以定义
m
不同的列表或数组(每个列表或数组的名称相似,可能只是通过数字索引),但处理几个不同的列表或数组通常比处理一个二维列表或数组更加困难和复杂

例如

file_names = ( "file1" "file2" "file3" "file4" ) # so in this case n is 4
for name in file_names do:
    ###  somehow save the m columns as a row in an array or list
print resulting_list_or_array
一些可能相关的注释:我想从文件中读取的
m
列不是文件中的第一列
m
(假设我需要跳过
skip_num
列,我确实知道
n
m
是什么


另外,我想读的行不是第一行,而是
row_num
行。

您的问题似乎定义得很清楚

result = []

file_names = ("file1", "file2", "file3", "file4")
for name in file_names do:
    f = open(name)
    for i, line in enumerate(f):
        if i == 122: # note this will be line_no + 1
            data = line.strip().split()
            result.append([data[0], data[5], data[6], data[9]])

print result # a dynamically created 2D array

您可以使用内置模块
glob
numpy.genfromtxt
生成通用代码,如下例所示,其中许多
test*.txt
文件的第二行将在末尾构建一个二维数组:

from glob import glob

import numpy as np

def read(fname, skip_header=1):
    with open(fname) as f:
        for i in range(skip_header):
            f.next()
        return f.next()

a = np.genfromtxt((read(fname) for fname in glob('test*.txt')))

如果我想阅读不是第一行的特定行怎么办?我编辑了上面的问题以反映这一点。这就是
enumerate
if
语句所做的。如果
m
是40怎么办?在您以
result.append开头的行中,具体列出每个元素会很麻烦。Would类似于
result.append([data[skip_num:skip_num+m]])
work?是不是
glob
通常与Python一起安装的标准模块(比如,如果我在Linux机器上用Python运行
从glob导入glob
,它最有可能工作)或者我必须自己安装吗?@Joshua是的…
glob
是一个标准模块…你试过这个答案了吗?还没有。如果我想读取文件中的特定行,我是否只需要循环
f.next()
到达该行所需的次数?@Joshua正确……我已将答案编辑得更为笼统,使用了与
numpy.genfromtxt相同的术语