首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >用numpy导入数组文件

用numpy导入数组文件
EN

Stack Overflow用户
提问于 2013-12-12 15:53:59
回答 1查看 637关注 0票数 2

我有一个包含多个.npy文件的目录(numpy数组),每个文件都有一个二维数组(相同的宽度和高度)。我需要读取所有文件并生成一个包含目录中所有数组的三维数组,结果形状应该类似于(文件的#,宽度,高度)。

到目前为止我的代码是:

代码语言:javascript
复制
import os
import numpy

for file in os.listdir(os.getcwd()):
   result = numpy.load(file) #Obviously this doen't work

但我只是不知道如何生成结果数组。我应该先创建一个零数组,然后填充它吗?我能飞着做这个吗?你能帮帮我吗?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2013-12-12 16:07:01

如果您知道有多少个以及大小,那么首先创建一个空数组。(空数组速度更快,因为不必对所有元素进行零化。)就像这样:

代码语言:javascript
复制
# 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。这是相当慢的,因为它必须在每次迭代中分配一个新的内存块并复制数据。试试这个:

代码语言:javascript
复制
# 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);
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/20548051

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档