首页 > 解决方案 > 如何从文件夹中读取多个 numpy 数组

问题描述

我在一个文件夹中有多个 numpy 数组(.npy)。有没有办法在 Python 中自动读取所有这些?还是我需要手动输入他们的名字?我找不到与从 Python 文件夹中读取多个 numpy 数组相关的信息。

标签: pythonnumpy

解决方案


您可以使用glob抓取.npy与指定*.npy模式匹配的所有文件。glob.glob返回一个路径名列表并glob.iglob返回一个迭代器,而不是同时存储所有路径名(如果您有大量文件,这将很有用)。这是一个小例子:

代码:

import os
import glob
import numpy as np


# Let's create folder
folder = './np_arrays'
try: 
    os.mkdir(folder)
except OSError: 
    print('Folder exists!')

# Some dummy arrays
a = np.zeros((1, 5))
b = np.ones((1, 5))

# Save them as .npy to the created folder
np.save(os.path.join(folder, 'a'), a)
np.save(os.path.join(folder, 'b'), b)

# Getting all the numpy arrays .npy files based on matching pattern (*.npy)
file_paths = glob.glob(os.path.join(folder, '*.npy'))
print(file_paths)

# Import arrays from folder and store them as a dict
array_dict = {os.path.basename(f)[0]: np.load(f) for f in file_paths}
print(array_dict)

输出:

['./np_arrays/a.npy', './np_arrays/b.npy']
{'a': array([[0., 0., 0., 0., 0.]]), 'b': array([[1., 1., 1., 1., 1.]])}

推荐阅读