给定一个来自np.savez或np.savez_compressed的.npz文件,当它被np.load加载时,有没有办法检查文件是否被压缩?我试着看了docs和GitHub。它只告诉我文件是如何压缩的。
np.savez
np.savez_compressed
np.load
6yt4nkrj1#
np.load返回NpzFile对象。
NpzFile
zip
ZipFile
infolist()
ZipInfo
compress_type
如果使用np.savez,则压缩类型为ZIP_STORED,如果使用np.savez_compressed,则压缩类型为ZIP_DEFLATED(相关源代码)。总结一下:
ZIP_STORED
ZIP_DEFLATED
import numpy import zipfile def is_compressed(npz_file): zip_infos = npz_file.zip.infolist() if len(zip_infos) == 0: raise RuntimeError("Did not find ZipInfos unexpectedly") compress_type = zip_infos[0].compress_type if compress_type == zipfile.ZIP_STORED: return False elif compress_type == zipfile.ZIP_DEFLATED: return True else: raise ValueError("Unexpected compression type") # Example a = numpy.array([1, 2, 3]) numpy.savez("uncompressed.npz", a) numpy.savez_compressed("compressed.npz", a) u = numpy.load("uncompressed.npz") c = numpy.load("compressed.npz") print(is_compressed(u)) # False print(is_compressed(c)) # True
字符串
1条答案
按热度按时间6yt4nkrj1#
np.load
返回NpzFile
对象。zip
属性,这是一个ZipFile
对象。infolist()
方法,该方法返回ZipInfo
对象的列表。compress_type
属性,其中包含使用的压缩方法。如果使用
np.savez
,则压缩类型为ZIP_STORED
,如果使用np.savez_compressed
,则压缩类型为ZIP_DEFLATED
(相关源代码)。总结一下:
字符串