逐个像素地从文件读入numpy数组?

问题描述 投票:0回答:1

假设我有数千个2D numpy数组(每个都有600x600的形状)保存在文本文件中。我想逐个像素地读取每个数组的文件并对这些像素的一维数组进行操作,而不必加载整个文件,因为这会占用大量内存。

例如,如果这是在我的文件中:

array([[1, 42, 98, ..., 2], ..., [89, 10, 76, ..., 2]]), array([[36, 79, 13, ..., 11], [81, 101, 34, ..., 109]]), ...

我想(对于[0] [0]位置)[1, 36, ...],对于[0] [1]我想要[42, 79, ...]等等。在我完成对每个1D阵列的操作之后,我想将其从内存中删除并继续阅读下一个。这可能吗?它也不必来自文本文件,如果另一种类型的文件可以更好地工作。

python arrays python-3.x file numpy
1个回答
2
投票

你可以使用numpy memmap。像往常一样使用np.load加载数组,mmap_mode参数设置为True。来自文档:

为存储在磁盘上的二进制文件中的数组创建内存映射。

内存映射文件用于访问磁盘上的大段文件,而无需将整个文件读入内存。 NumPy的memmap是类似数组的对象。

© www.soinside.com 2019 - 2024. All rights reserved.