加载npz
文件时,NumPy的load()
函数returns a lazy file loader,而不是实际数据。如何加载npz
文件以便将数据加载到内存中?
答案 0 :(得分:3)
如果要强制读取和解压缩数组的内容,只需将其内容分配给变量,例如:
data = np.load('/path/to/data.npz', 'r')
a = data['a']
b = data['b']
# etc
如果你想保持与延迟加载器完全相同的语法,可以简单地将所有数组加载到dict中,例如:
data_dict = dict(data)
所以现在你可以使用
data_dict['a']
在脚本的后续部分引用a
。但是,我个人不会保留dict,因为它保存了对所有数组的引用,这样可以防止任何单独的未使用的数据在以后的脚本中被垃圾收集。
答案 1 :(得分:2)
我认为您在上一篇关于速度的问题中回答了您的问题:
data = np.load(dataset_text_filepath)['texts']
文件内容现在在内存中。
.npz
文件是一个zip存档,包含多个数组。使load
进行两步操作的原因是您可能总是希望一次加载所有数组。它可让您加载x
而无需加载y
。
您可以使用系统zip存档工具提取一个或多个文件,然后直接加载。为了更好地理解文件结构,这可能是一个有用的步骤。
要更直接,您需要学习np.lib.npyio.NpzFile
,也许是gzip
模块。