1

这是我的第一篇文章,我对编程真的很陌生——我有一个文件夹,里面有一些我想要处理的文件,然后用我需要的值创建一个 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))

虽然我在列表中有 2 个文件(数据路径文件夹),但 new_array 数组会覆盖数据并只给我第二个文件的值有什么想法吗?谢谢,

4

2 回答 2

2

如果我对您的理解正确,那么您的问题的解决方案就是您需要将其 vstack 到“my_array”而不是新的。

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

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

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

于 2012-11-06T23:23:21.567 回答
2

这是从特定文件夹中读取 numpy 数组中的所有文件所需执行的操作。我有一个test只包含文件的文件夹.txt。我的以下内容与所有文件file.py位于同一文件夹中。每个文件包含一个 4x4 矩阵/数组。运行脚本后,获得的将是一个 [Nx4x4] 的 numpy 数组。test.txt.txtmatrices

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)
于 2019-02-27T10:23:43.247 回答