跳到主要内容

NumPy格式概述(.npy / .npz)

NumPy文件格式是Python中用于数组存储的轻量级高效格式,针对数值计算场景优化设计,常用于机器学习流水线的中间数据集存储或模型数据序列化。


1. 核心特性

.npy格式

  • 向磁盘存储单个NumPy数组,同时记录数组形状、数据类型(dtype)和字节序等元数据。
  • 二进制格式,读写速度快。
  • 数据布局简单且固定,轻量化且具备跨平台可移植性。

.npz格式

  • 本质是多个.npy数组的ZIP压缩包
  • 压缩包内每个数组以独立.npy文件形式存储。
  • 适用于关联数组的分组存储(如机器学习数据集的特征与标签)。

可移植性

  • .npy文件可跨Python版本、跨操作系统读取。
  • 支持多维数组及复杂数据类型(结构化数组、记录数组)。

高速I/O

  • 支持高效内存映射(np.load(..., mmap_mode='r')),可处理大型数组而无需将全量数据加载至内存。
  • 相比CSV等文本格式,数据读写开销极低。

2. 适用场景

机器学习流水线的中间存储

  • 存储模型训练前的预处理特征或嵌入向量。
  • 无需分层结构时,可作为HDF5的轻量级替代方案。

模型输入/输出

  • 将数据集、预测结果保存为.npy/.npz格式,保障实验可复现性。
  • 快速加载数据至训练/评估循环,提升流水线效率。

数据交换

  • 适用于Python脚本间或小规模实验中的数组共享。

3. 在Kumo中的集成

  • .npy/.npz文件适用于数值数组的快速本地存储/临时存储
  • 最适配单节点流水线,或无需HDF5分层存储的场景。
  • 处理大型数据集时,推荐使用内存映射数组,降低内存占用。

集成注意事项:

  • 超大规模数据集避免使用.npz格式,解压缩过程可能耗时。
  • 频繁随机访问的独立数组,优先使用.npy格式。
  • 统一文件命名规范,便于流水线自动发现数据文件。

4. 性能说明

I/O吞吐量

  • 二进制格式实现接近原生的读写速度。
  • 内存映射技术避免超大型数组的内存拷贝操作。

内存使用

  • .npy数组支持全量加载或内存映射加载,内存管理灵活。
  • 元数据开销极低(仅包含形状、数据类型、字节序)。

兼容性

  • 原生兼容NumPy、SciPy及PyTorch(torch.from_numpy)。
  • 适配Python科学计算生态,如需转换为HDF5等格式也易于实现。

5. 参考链接