Python在单个numpy数组中从多个文件获取数据的快速方法

Python在单个numpy数组中从多个文件获取数据的快速方法,python,arrays,python-2.7,numpy,Python,Arrays,Python 2.7,Numpy,我需要读取存储在许多相同格式但长度不同的文件中的数据,即相同的列,但行数不同。此外,我需要将每列数据存储在一个数组中(最好是一个numpy数组,但也可以使用列表) 现在,我使用numpy.loadtxt()读取循环中的每个文件,然后连接生成的数组。假设数据由3列组成,存储在两个文件“foo”和“bar”中: 我的问题是:有没有更好/更快的方法?我需要这是尽快,因为我需要在数百个文件阅读 例如,我可以想象,首先找出我总共将拥有多少行,然后“分配”一个足够大的数组以首先容纳所有数据,然后在该数组中复

我需要读取存储在许多相同格式但长度不同的文件中的数据,即相同的列,但行数不同。此外,我需要将每列数据存储在一个数组中(最好是一个numpy数组,但也可以使用列表)

现在,我使用
numpy.loadtxt()
读取循环中的每个文件,然后连接生成的数组。假设数据由3列组成,存储在两个文件“foo”和“bar”中:

我的问题是:有没有更好/更快的方法?我需要这是尽快,因为我需要在数百个文件阅读

例如,我可以想象,首先找出我总共将拥有多少行,然后“分配”一个足够大的数组以首先容纳所有数据,然后在该数组中复制读入数据可能会执行得更好,因为我避开了连接。我不知道行的总数,所以这也必须在python中完成

另一个想法是首先读入所有数据,分别存储每个读入的数据,最后将它们连接起来。(或者,由于这基本上给出了行的总数,所以分配一个适合所有数据的行,然后将数据复制到其中)


有人对什么最有效有经验吗?

不要将每个文件与其他文件连接起来,阅读列表中的所有内容,并最终生成结果

import numpy as np
filenames = ["foo", "bar"]
data = np.concatenate([np.loadtxt(f) for f in filenames])

如果愿意,可以将
数据
拆分为列,但大多数情况下,这不是一个好主意。

一般来说,在执行过程中进行连接最慢,因为每次都会生成一个新数组。添加到列表的速度相对较快,因为列表只收集指针。插入到预先分配的数组中也很好。
import numpy as np
filenames = ["foo", "bar"]
data = np.concatenate([np.loadtxt(f) for f in filenames])