迭代文件夹中的文件以创建numpy数组

时间:2012-11-06 23:09:12

标签: arrays file text numpy

这是我的第一篇帖子,我对编程很陌生 - 我有一个文件夹,其中包含一些我想要处理的文件,然后使用我需要的值创建一个numpy数组:

listing = os.listdir(datapath)
my_array=np.zeros(shape=(0,5))
for infile in listing:
    dataset = open(infile).readlines()[1:]
    data = np.genfromtxt(dataset, usecols=(1,6,7,8,9))
    new_array = np.vstack((my_array, data))

虽然我在列表(datapath文件夹)中有2个文件,但new_array数组会覆盖数据并仅提供第二个文件的值 有任何想法吗? 感谢,

2 个答案:

答案 0 :(得分:1)

如果我理解正确,那么解决问题的方法就是你需要将它解压缩到“my_array”而不是新的。

只需用最后一行替换它,它应该可以工作:

my_array = np.vstack((my_array, data))

但是,我不认为这是最有效的方法。由于您知道该文件夹中有多少文件,因此只需预先定义数组的大小并填充其内容。

答案 1 :(得分:0)

如果要从特定文件夹中读取numpy数组中的所有文件。在这里,我的test containing all .txt files所在的文件夹file.py在同一文件夹中,其中包含许多.txt文件。每个文件包含一个4x4矩阵/阵列。获得的matrices将是[Nx4x4]的numpy数组。

import numpy as np
from glob import glob

def read_all_files():
   file_names = glob('test/*')
   arrays = [np.loadtxt(f) for f in file_names]
   matrices = np.concatenate(arrays)