gpt4 book ai didi

python - 在 python 中保存 `.npz` 文件而不是 `.npy` 在速度、内存和查找方面有什么优势?

转载 作者:太空宇宙 更新时间:2023-11-03 14:39:54 24 4
gpt4 key购买 nike

保存 .npz 文件的 numpy.savez 的 python 文档是:

The .npz file format is a zipped archive of files named after the variables they contain. The archive is not compressed and each file in the archive contains one variable in .npy format. [...]

When opening the saved .npz file with load a NpzFile object is returned. This is a dictionary-like object which can be queried for its list of arrays (with the .files attribute), and for the arrays themselves.

我的问题是:numpy.savez 有什么意义?

保存多个数组只是一个更优雅的版本(更短的命令),还是在保存/读取过程中有加速?占用内存少吗?

最佳答案

回答您的问题有两部分解释。

我。 NPY 与 NPZ

正如我们已经从文档中读到的,.npy 格式是:

the standard binary file format in NumPy for persisting a single arbitrary NumPy array on disk. ... The format is designed to be as simple as possible while achieving its limited goals. (sources)

.npz只是一个

simple way to combine multiple arrays into a single file, one can use ZipFile to contain multiple “.npy” files. We recommend using the file extension “.npz” for these archives. (sources)

因此,.npz 只是一个包含多个“.npy”文件的 ZipFile。此 ZipFile 可以压缩(使用np.savez_compressed)或解压缩(使用np.savez)

类似于tarball archive file在类 Unix 系统中,tarball 文件可以只是一个包含其他文件的未压缩归档文件,也可以是结合各种压缩程序(gzipbzip2)的压缩归档文件等)

二。用于二进制序列化的不同 API

并且Numpy还提供了different APIs生成这些二进制文件输出:

  • np.save ---> 以NumPy .npy 格式保存数组到二进制文件
  • np.savez --> 以未压缩 .npz 格式将多个数组保存到一个文件中
  • np.savez_compressed --> 将多个数组以压缩 .npz 格式保存到一个文件中
  • np.load --> 从.npy, .npz 或pickled文件中加载数组或pickled对象

如果我们浏览 Numpy 的源代码,under the hood :

def _savez(file, args, kwds, compress, allow_pickle=True, pickle_kwargs=None):
...
if compress:
compression = zipfile.ZIP_DEFLATED
else:
compression = zipfile.ZIP_STORED
...


def savez(file, *args, **kwds):
_savez(file, args, kwds, False)


def savez_compressed(file, *args, **kwds):
_savez(file, args, kwds, True)

然后回到问题:

  • 如果只使用np.save,则不会在.npy格式之上再做压缩,只有一个存档文件,方便管理多个相关文件文件。
  • 如果使用 np.savez_compressed,那么磁盘上的内存当然会减少,因为有更多的 CPU 时间来完成压缩工作(即有点慢)。

关于python - 在 python 中保存 `.npz` 文件而不是 `.npy` 在速度、内存和查找方面有什么优势?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54238670/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com