我有一个包含多个.npy文件(numpy数组)的目录,每个文件都有一个2维数组(相同的宽度和高度)。我需要读取所有文件并生成包含目录中所有数组的3维数组,结果形状应该是(文件数,宽度,高度)。
到目前为止我的代码:
import os
import numpy
for file in os.listdir(os.getcwd()):
result = numpy.load(file) #Obviously this doen't work
但我只是不知道如何生成结果数组。我应该首先创建一个零数组,然后填充它吗?我可以动态制作吗? 你能帮帮我吗?
答案 0 :(得分:2)
如果您知道有多少以及大小是多少,请先创建一个空数组。 (空数组更快,因为您不必将所有元素归零。)像这样:
# Allocate empty array.
bigarray = numpy.empty([width, height, len(filenames)]);
# Load files.
for i in range(len(filenames)):
bigarray[:,:,i] = numpy.load(filenames[i]);
如果您事先不知道尺寸,请使用numpy.append
。这是相当慢的,因为它必须在每次迭代中分配新的内存块和复制数据。试试这个:
# Load first array.
bigarray = numpy.load(filenames[0]);
# Add a new axis to make it 3D.
bigarray = bigarray[numpy.newaxis,...];
# Load rest of arrays.
for i in range(1,len(filenames)):
bigarray = numpy.append(bigarray, numpy.load(filenames[i])[numpy.newaxis,...], axis=0);