Python Numpy数据保存与读取:.npy/.npz与文本文件详解

键盘旁的猫
键盘旁的猫
发布时间:2026-10-13 | 5人浏览过
原创

本文详细介绍Python Numpy中高效的数据存储与读取方案。涵盖二进制格式numpy.save、numpy.savez及压缩版savez_compressed的使用,以及文本格式numpy.savetxt与loadtxt的参数配置。适用于深度学习训练数据等大量数值文件的快速存取场景。

Numpy数据保存与读取概述

在处理频繁读取大量数值文件的场景(例如深度学习模型训练)时,建议先将数据存储为Numpy格式,随后直接调用Numpy进行读取。这种方式的读取速度相比其他转换格式有显著提升。

接下来,我们将分别介绍将数据保存为二进制文件以及保存为文本文件的具体方法。

二进制文件格式保存与读取

1. 保存为二进制文件(.npy/.npz)

numpy.save

该函数用于将一个数组保存至二进制文件中,生成的文件扩展名为.npy。

参数说明

numpy.save(file, arr, allow_pickle=True, fix_imports=True) file:指定文件名或文件路径。 arr:需要存储的数组对象。 allow_pickle:布尔值,用于控制是否允许使用Python pickles保存对象数组(可选参数,通常保持默认即可)。 fix_imports:用于确保Python 2环境中能正确读取由Python 3保存的数据(可选参数,通常保持默认即可)。

使用示例


>>> import numpy as np 
#生成数据 
>>> x=np.arange(10) 
>>> x 
array([0, 1, 2, 3, 4, 5, 6, 7, 8, 9]) 
 
#数据保存 
>>> np.save('save_x',x) 
 
#读取保存的数据 
>>> np.load('save_x.npy') 
array([0, 1, 2, 3, 4, 5, 6, 7, 8, 9]) 
numpy.savez

此函数同样用于将数组保存为二进制文件,但其强大之处在于能够将多个数组保存至同一个文件中,文件扩展名为.npz。本质上,.npz文件是将多个前述np.save生成的npy文件通过打包(未压缩)方式合并而成的。若解压该npz文件,可以看到内部包含多个独立的npy文件。

参数说明

numpy.savez(file, *args, **kwds) file:指定文件名或文件路径。 *args:需要存储的数组,支持传入多个数组。若未为数组指定Key,Numpy将默认使用'arr_0'、'arr_1'等格式进行命名。 kwds:可选参数,通常保持默认即可。

使用示例


>>> import numpy as np 
#生成数据 
>>> x=np.arange(10) 
>>> x 
array([0, 1, 2, 3, 4, 5, 6, 7, 8, 9]) 
>>> y=np.sin(x) 
>>> y 
array([ 0.  , 0.84147098, 0.90929743, 0.14112001, -0.7568025 , 
  -0.95892427, -0.2794155 , 0.6569866 , 0.98935825, 0.41211849]) 
  
#数据保存 
>>> np.save('save_xy',x,y) 
 
#读取保存的数据 
>>> npzfile=np.load('save_xy.npz') 
>>> npzfile #是一个对象,无法读取 
<numpy.lib.npyio.NpzFile object at 0x7f63ce4c8860> 
 
#按照组数默认的key进行访问 
>>> npzfile['arr_0'] 
array([0, 1, 2, 3, 4, 5, 6, 7, 8, 9]) 
>>> npzfile['arr_1'] 
array([ 0.  , 0.84147098, 0.90929743, 0.14112001, -0.7568025 , 
  -0.95892427, -0.2794155 , 0.6569866 , 0.98935825, 0.41211849]) 

更为便捷的是,你可以不使用Numpy默认生成的Key,而是为数组指定具有语义意义的Key。这样在加载数据时,无需猜测哪个数据对应何种内容,直接通过Key即可获取所需数据。


#数据保存 
>>> np.savez('newsave_xy',x=x,y=y) 
 
#读取保存的数据 
>>> npzfile=np.load('newsave_xy.npz') 
 
#按照保存时设定组数key进行访问 
>>> npzfile['x'] 
array([0, 1, 2, 3, 4, 5, 6, 7, 8, 9]) 
>>> npzfile['y'] 
array([ 0.  , 0.84147098, 0.90929743, 0.14112001, -0.7568025 , 
  -0.95892427, -0.2794155 , 0.6569866 , 0.98935825, 0.41211849]) 

这种方式非常实用。在深度学习中,若需保存训练集、验证集、测试集及其对应的标签,使用此方法存储可以按需加载,大幅减少文件数量,也避免了频繁修改文件名的麻烦。

numpy.savez_compressed

该函数是在前述numpy.savez基础上的增强版,增加了压缩功能。前文介绍numpy.savez时已注明其生成的文件为打包但不压缩的状态,而本函数在打包过程中应用了压缩算法,使得最终生成的npz文件体积比使用numpy.savez得到的更小,而解压前的各npy文件大小保持不变。

注意:该函数所需的参数与numpy.savez完全一致,使用方式也完全相同。

文本文件格式保存与读取

2. 保存到文本文件

numpy.savetxt

该函数用于将数组保存至文本文件中,保存后的文件可以直接打开查看内容。

参数说明

numpy.savetxt(fname, X, fmt='%.18e', delimiter=' ', newline='\n', header='', footer='', comments='# ', encoding=None) fname:文件名或文件路径。若文件后缀为.gz,文件将被自动保存为.gzip格式,np.loadtxt可识别该格式。 X:需要存储的一维或二维数组。 fmt:控制数据存储的格式。 delimiter:数据列之间的分隔符。 newline:数据行之间的分隔符。 header:写入文件头部的字符串。 footer:写入文件底部的字符串。 comments:文件头部或尾部字符串的开头字符,默认为'#'。 encoding:使用默认编码参数。

使用示例


>>> import numpy as np 
#生成数据 
>>> x = y = z = np.ones((2,3)) 
>>> x 
array([[1., 1., 1.], 
  [1., 1., 1.]]) 
  
#保存数据 
np.savetxt('test.out', x) 
np.savetxt('test1.out', x,fmt='%1.4e') 
np.savetxt('test2.out', x, delimiter=',') 
np.savetxt('test3.out', x,newline='a') 
np.savetxt('test4.out', x,delimiter=',',newline='a') 
np.savetxt('test5.out', x,delimiter=',',header='abc') 
np.savetxt('test6.out', x,delimiter=',',footer='abc') 

保存生成的文件具有良好的可读性,可以直接打开查看内容变化。

numpy.loadtxt

根据前文定制的保存格式,加载数据的函数也需相应调整。

参数说明

numpy.loadtxt(fname, dtype=<class 'float'>, comments='#', delimiter=None, converters=None, skiprows=0, usecols=None, unpack=False, ndmin=0, encoding='bytes') fname:文件名或文件路径。若文件后缀为.gz或.bz2,文件将被解压后再载入。 dtype:指定要读取的数据类型。 comments:文件头部或尾部字符串的开头字符,用于识别头部和尾部字符串。 delimiter:划分读取值的字符串分隔符。 converters:数据行之间的分隔符(注:原文此处描述可能有误,通常converters为转换器字典,此处按原文保留但需注意实际用法)。 .......后续不常用参数省略。

使用示例


np.loadtxt('test.out') 
np.loadtxt('test2.out', delimiter=',') 

总结

至此,关于Python Numpy中数据常用保存与读取方法的介绍已完成。如需了解更多相关Python Numpy数据保存与读取内容,请搜索本站历史文章或继续浏览下方相关文章。希望大家今后多多支持本站!

相关标签:

本站声明

本文内容仅供参考,不代表本站观点。转载或引用请注明出处。如发现内容问题,请通过联系我们页面反馈。

Python 相关产品和应用

全部下载

专题列表