上一篇
Python保存.npy文件完全指南 - 高效数据存储教程
- Python
- 2025-07-28
- 1507
Python保存.npy文件完全指南
高效存储NumPy数组数据的最佳实践
什么是.npy文件?
.npy文件是NumPy库的专用二进制文件格式,用于高效存储NumPy数组数据。与CSV或文本文件相比,.npy文件具有以下优势:
- 高效存储:二进制格式,文件更小
- 快速读写:比文本文件快得多
- 保留完整信息:包括数据类型、形状等元数据
- 跨平台:在不同操作系统间兼容
安装NumPy
使用前需要先安装NumPy库:
pip install numpy
基本保存方法
使用numpy.save()函数保存单个数组:
import numpy as np
# 创建示例数组
data = np.array([[1, 2, 3], [4, 5, 6]])
# 保存为.npy文件
np.save('my_array.npy', data)
print("数组已成功保存!")
关键点:
- 默认扩展名是
.npy,但也可以自定义 - 文件包含所有数组信息(维度、数据类型等)
- 如果文件已存在,将被覆盖
保存多个数组
使用numpy.savez()保存多个数组到单个文件:
import numpy as np
# 创建多个数组
arr1 = np.arange(10)
arr2 = np.random.rand(5, 5)
arr3 = np.array(['Python', 'NumPy', 'Data'])
# 保存到单个.npz文件
np.savez('multiple_arrays.npz', array1=arr1, matrix=arr2, labels=arr3)
print("多个数组已成功保存!")
注意:
- 保存的文件扩展名应为
.npz - 数组通过关键字参数命名
- 加载时使用
np.load()['关键字']访问数组
压缩存储
对于大型数组,使用numpy.savez_compressed()节省磁盘空间:
import numpy as np
# 创建大型数组
large_array = np.random.rand(1000, 1000)
# 压缩保存
np.savez_compressed('compressed_array.npz', big_data=large_array)
print("压缩数组已成功保存!")
适用场景:
- 大型数据集(如图像、矩阵)
- 需要长期存储的数据
- 磁盘空间有限的场景
实际应用示例
机器学习中保存和加载数据集:
import numpy as np
from sklearn.datasets import load_iris
# 加载鸢尾花数据集
iris = load_iris()
X, y = iris.data, iris.target
# 保存特征和标签
np.save('iris_features.npy', X)
np.save('iris_labels.npy', y)
# 在另一个程序中使用
X_loaded = np.load('iris_features.npy')
y_loaded = np.load('iris_labels.npy')
print("特征形状:", X_loaded.shape)
print("标签形状:", y_loaded.shape)
优势:
- 比CSV加载速度快10倍以上
- 保持数据类型和形状信息
- 特别适合大型数据集
最佳实践
- 文件命名:使用有意义的文件名和扩展名
- 版本控制:对大型数据集添加版本号
- 数据类型:保存前使用
astype()优化数据类型 - 错误处理:添加异常处理机制
import numpy as np
try:
# 尝试保存操作
data = np.random.rand(100, 100)
np.save('important_data.npy', data)
except PermissionError:
print("错误:没有文件写入权限")
except Exception as e:
print(f"保存过程中发生错误: {str(e)}")
else:
print("数据保存成功!")
本文由JiangRun于2025-07-28发表在吾爱品聚,如有疑问,请联系我们。
本文链接:http://521pj.cn/20256683.html
发表评论