【问题标题】:Concatenate many lists from text files连接来自文本文件的多个列表
【发布时间】:2015-07-29 16:10:39
【问题描述】:

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

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=',')]))

这只是将第一个列表放入数据中。如果不进行连接,它会将两个列表作为两个单独数组的列表放入数据中。

【问题讨论】:

    标签: python arrays numpy concatenation genfromtxt


    【解决方案1】:

    收集列表中的数组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)
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2019-04-13
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-04-08
      • 1970-01-01
      相关资源
      最近更新 更多