Python 在mmap_模式下Numpy加载*.npz文件的一部分
我知道已经有一个类似的问题没有得到回答 我有一个非常大的numpy数组保存在npz文件中。我不想完全加载它(我的RAM不能完全处理它),只想加载它的一部分 文件是这样生成的:Python 在mmap_模式下Numpy加载*.npz文件的一部分,python,numpy,upload,numpy-memmap,Python,Numpy,Upload,Numpy Memmap,我知道已经有一个类似的问题没有得到回答 我有一个非常大的numpy数组保存在npz文件中。我不想完全加载它(我的RAM不能完全处理它),只想加载它的一部分 文件是这样生成的: np.savez_compressed('file_name.npz', xxx) 我想这样加载它: xxx = np.load('file_name.npz,mmap_mode="r") 现在,要实际访问我感兴趣的数组部分,我应该键入 a = xxx['arr_0'][0][0][0] 但是,尽管这一部分非常小,p
np.savez_compressed('file_name.npz', xxx)
我想这样加载它:
xxx = np.load('file_name.npz,mmap_mode="r")
现在,要实际访问我感兴趣的数组部分,我应该键入
a = xxx['arr_0'][0][0][0]
但是,尽管这一部分非常小,python首先加载整个数组(我知道它是因为我的RAM已满),然后显示这一小部分。如果我直接写信,也会发生同样的情况
xxx = np.load('file_name.npz,mmap_mode="r")['arr_0'][0][0][0]
我做错了什么?
mmap\u模式
不适用于npz
文件。npz
是zip
存档。也就是说,它包含npy
文件,每个键一个。通过使用OS archive manager工具查看npz
文件,可以看到这一点
我有点惊讶,您的load
调用没有引发错误,但是查看代码,我发现它将分派到NpzFile
加载程序,甚至没有查看mmap\u mode
参数
要使用mmap
,您必须提取arr_0.npy
(再次使用操作系统工具),并在其上使用load