说我有成千上万的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数组的操作后,我想从内存中删除它,然后继续读取下一个数组。这可能吗?如果另一种类型的文件可以更好地工作,它也不必来自文本文件。
答案 0 :(得分:2)
您可以使用numpy memmap。像往常一样,使用np.load,将mmap_mode
参数设置为True,加载数组。从文档中:
为存储在磁盘上二进制文件中的数组创建内存映射。
内存映射文件用于访问磁盘上大文件的小片段,而无需将整个文件读入内存。 NumPy的内存映射类似于数组 对象。