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. 参考链接
- NumPy .npy/.npz格式文档:https://numpy.org/doc/stable/reference/generated/numpy.save.html
- NumPy官方网站:https://numpy.org/