Format Atlas

对比

NPY vs NPZ

NPY保存一个数组及其dtype和shape。NPZ将多个NPY成员装入ZIP,并可按数组名称读取。

应该选择哪种格式?

单个数组或数值数组的内存映射可选NPY;需一起交付多个数组时可选NPZ。

适用于 NPY

以二进制形式连同类型和形状保存单个 NumPy 数组 · 将数组传递给基于 NumPy 的科学计算和机器学习流程

  • 不转成文本而保留 dtype 与多维 shape
  • 对兼容的非 object 数组使用内存映射访问

适用于 NPZ

将多个 NumPy 数组打包到一个 ZIP 归档 · 在基于 NumPy 的科学计算流程间传递命名数组

  • 将多个数组保存在一个文件中
  • 按需选择 ZIP 成员不压缩或压缩

基本信息

项目NPYNPZ
扩展名.npy.npz
MIME 类型application/octet-streamapplication/zip
常见用途以二进制形式连同类型和形状保存单个 NumPy 数组 · 将数组传递给基于 NumPy 的科学计算和机器学习流程将多个 NumPy 数组打包到一个 ZIP 归档 · 在基于 NumPy 的科学计算流程间传递命名数组
打开方式使用 NumPy `load` 或其他支持 NPY 的工具打开,并检查 dtype、shape 和格式版本。处理大型数组时,确认内存映射适合该数据布局和用途。使用NumPy `load`或支持NPZ的工具打开,检查数组名称并读取所需内容。使用后关闭返回的`NpzFile`;对于可能含object数组的陌生文件,检查pickle设置。
导出或转换使用 NumPy `save` 保存。由文本转换时比较数值类型、字节序、shape 和缺失值处理方式。若涉及 object dtype 数组,先确认是否需要 pickle;不要对不可信文件轻率启用。用`savez`或`savez_compressed`保存多个数组。确认成员是未压缩还是DEFLATE,并与接收端核对数组名称、dtype和shape。转换后比较数组和值。

按用途选择

不转成文本而保留 dtype 与多维 shape

以二进制形式连同类型和形状保存单个 NumPy 数组 · 将数组传递给基于 NumPy 的科学计算和机器学习流程

NPY

对兼容的非 object 数组使用内存映射访问

以二进制形式连同类型和形状保存单个 NumPy 数组 · 将数组传递给基于 NumPy 的科学计算和机器学习流程

NPY

将多个数组保存在一个文件中

将多个 NumPy 数组打包到一个 ZIP 归档 · 在基于 NumPy 的科学计算流程间传递命名数组

NPZ

按需选择 ZIP 成员不压缩或压缩

将多个 NumPy 数组打包到一个 ZIP 归档 · 在基于 NumPy 的科学计算流程间传递命名数组

NPZ

关键点 1

NPY的基本保存单位是单个数组。

进一步了解差异

关键点 2

NPZ是由各数组的NPY成员组成的归档。

进一步了解差异

进一步了解差异

应考虑访问方式和压缩成本,而不仅是数组数量。不要为不可信的object类型输入启用pickle。

  • savez写入非压缩归档;savez_compressed使用DEFLATE。NPZ扩展名不表示是否压缩。
  • 数值NPY可进行内存映射,object数组不适用。不要认为普通numpy.load会以相同方式映射NPZ成员。

常见问题

NPZ总比NPY小吗?

不一定。容量受内容、压缩设置和ZIP开销影响。请用实际数据测量容量和加载时间。

了解详情

参考资料与规范