【问题标题】:Numpy load part of *.npz file in mmap_mode在 mmap_mode 中 Numpy 加载 *.npz 文件的一部分
【发布时间】:2020-05-24 11:06:09
【问题描述】:

我知道已经有一个类似的问题,没有得到回答。

我有一个非常大的 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]

但是虽然这块很小,python 首先加载整个数组(我知道是因为我的 RAM 被填满了),然后显示这个小部分。如果我直接写也会发生同样的情况

xxx = np.load('file_name.npz,mmap_mode="r")['arr_0'][0][0][0]

我做错了什么?

【问题讨论】:

    标签: python numpy upload numpy-memmap


    【解决方案1】:

    mmap_mode 不适用于npz 文件。 npzzip 存档。也就是说,它包含npy 文件,每个key 一个。您可以通过使用 OS 归档管理器工具查看 npz 文件来看到这一点。

    我有点惊讶您的 load 调用没有引发错误,但是查看代码我发现它调度到 NpzFile 加载程序,甚至没有查看 mmap_mode 参数。

    要使用mmap,您必须提取arr_0.npy(再次使用操作系统工具),然后在其上使用load

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2015-05-18
      • 2020-04-19
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多