从文本文件中连接许多列表

时间:2015-07-29 16:10:40

标签: python arrays numpy concatenation genfromtxt

我在文本文件中有几千个列表。例如:

text1.txt:

1,2,3,4

text2.txt:

a,b,c,d

我想打开我的所有文本文件并将它们全部放入一个列表中,如下所示:

[1,2,3,4,a,b,c,d]

但是,我尝试的所有循环都给了我一个列表,如:

[array([1,2,3,4]),array([a,b,c,d)]]

或者他们只是给我回来[1,2,3,4]。

这是我尝试过的最新代码:

file_list=glob.glob(file_dir+'/*.txt')
data=[]
for file_path in file_list:
    data.append(np.concatenate([np.genfromtxt(file_path, delimiter=',')]))

将第一个列表放入数据中。如果没有连接,它会将两个列表作为两个单独数组的列表放入数据中。

1 个答案:

答案 0 :(得分:2)

在列表data中收集数组,然后调用np.concatenate一次 将数组列表连接到一个数组中:

data=[]
for file_path in glob.glob(file_dir+'/*.txt')
    data.append(np.genfromtxt(file_path, delimiter=','))
result = np.concatenate(data)

由于np.genfromtxt可以接受生成器作为其第一个参数, 你也可以避免形成许多小的独立阵列 创建一个生成器表达式,它生成所有文本中的所有行 文件:

import glob
import itertools as IT

lines = IT.chain.from_iterable(open(file_path, 'r') 
                               for file_path in glob.glob('*.txt'))
result = np.genfromtxt(lines, delimiter=',', dtype=None)