从文件中逐像素读取numpy数组?

时间:2018-08-29 17:15:10

标签: python arrays python-3.x file numpy

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

例如,如果它在我的文件中:

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数组的操作后,我想从内存中删除它,然后继续读取下一个数组。这可能吗?如果另一种类型的文件可以更好地工作,它也不必来自文本文件。

1 个答案:

答案 0 :(得分:2)

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

  

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

     

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