python - 使用 numpy 导入数组文件

标签 python arrays numpy

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

到目前为止我的代码:

import os
import numpy

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

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

最佳答案

如果您知道有多少个以及大小是多少,请先创建一个空数组。 (空数组更快,因为您不必将所有元素归零。)如下所示:

# 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);

关于python - 使用 numpy 导入数组文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20548051/

相关文章:

python - Python 请求模块中的 SSLError

arrays - .text .data 和 main 的段错误(.data 部分中的 main)

c++ - 在 C++ 中创建数量不断变化的指针

python - 在 ndarray 中逐行计算唯一元素

python - 如何通过 ZeroMQ 将图像(opencv 矩阵/numpy 数组)从 C++ 发布者传输到 python 发送者?

python - 如何在Python中使用paramiko发送控制信号?

python - Numpy:沿轴应用返回错误:使用序列设置数组元素

python - 导入错误 : Missing required dependencies ['numpy' ]

python - 使用 Python 在 Selenium Webdriver (Selenium 2) 中显式等待和隐式等待的问题

java - 如何进行双数组枚举查找