您的位置:首页 > 教育 > 培训 > 38python数据分析numpy基础之savez一次保存多个数组到npz文件

38python数据分析numpy基础之savez一次保存多个数组到npz文件

2024/10/5 14:07:52 来源:https://blog.csdn.net/sinat_34735632/article/details/139610634  浏览:    关键词:38python数据分析numpy基础之savez一次保存多个数组到npz文件

1 python数据分析numpy基础之savez一次保存多个数组到npz文件

python的numpy库的savez()函数,将多个数组保存到npz文件中。

用法

numpy.savez(file, *args, **kwds)

描述

numpy.savez(file),一次可以保存多个数组到npz文件中,可以保存任意维度的numpy数组,不限于一维和二维。

保存numpy数组的结构,取出时shape和dtype与保存时的shape和dtype一致。

一次可以保存多个numpy数组,每次保存会覆盖之前文件中存在的内容。

保存的数组通过位置或关键字参数进行保存,读取时,若未提供关键字则默认关键字为arr_0、arr_1。

入参

file:必选,文件对象或文件名,用于保存数组的文件;

1.1 入参file

numpy.savez(file)的入参file为必选入参,可以为文件对象或文件名;

文件名后缀若为.npz则不补齐后缀,文件名后缀若没有.npz则自动补齐后缀;

文件名的路径必须存在,文件名可以不存在;

如果是文件对象,则必须以二进制方式打开;

>>> import numpy as np
# savez()将多个数组保存到npz文件中
>>> f1=r'E:\ls\savez1.npz'
>>> f5=r'E:\ls\savez5'
# file为npz文件名
>>> np.savez(f1,[1,2],a1=(5,6),a2=np.array((8,9)))
# file为没有后缀的npz文件,自动补齐后缀npz
>>> np.savez(f5,b2=[11,12],b1=[18,19])
# file为文件对象,需以二进制b的模式打开
>>> f6=r'E:\ls\savez6'
>>> f6obj=open(f6,'wb')
>>> np.savez(f6obj,[1,2],[5,6])
>>> f6obj=open(f6,'rb')
>>> np.load(f1)
NpzFile 'E:\\ls\\savez1.npz' with keys: a1, a2, arr_0
>>> np.load(f5+'.npz')
NpzFile 'E:\\ls\\savez5.npz' with keys: b2, b1
>>> np.load(f6)
NpzFile 'E:\\ls\\savez6' with keys: arr_0, arr_1

1.2 存取npz

numpy.savez()可以通过位置或关键字参数保存数组,读取时,若未提供关键字则默认关键字为arr_0、arr_1,依次类推。保存的数组可以为元组、列表、多维数组。每次savez都会覆盖之前的内容。

>>> import numpy as np
>>> f1=r'E:\ls\savez1.npz'
# savez()按位置保存数组,则通过arr_n,n从0开始进行存取数组
# 否则按保存时的关键字参数进行存取
# savez()一次可以保存多个数组
>>> np.savez(f1,[1,2],a1=(5,6),a3=np.arange(24).reshape(2,3,4))
>>> f1load=np.load(f1)
>>> f1load
NpzFile 'E:\\ls\\savez1.npz' with keys: a1, a3, arr_0
>>> f1load['a1']
array([5, 6])
>>> f1load['a3']
array([[[ 0,  1,  2,  3],[ 4,  5,  6,  7],[ 8,  9, 10, 11]],[[12, 13, 14, 15],[16, 17, 18, 19],[20, 21, 22, 23]]])
>>> f1load['arr_0']
array([1, 2])
# 每次savez()都会覆盖之前的内容
>>> np.savez(f1,a3=[21,22])
>>> f1load=np.load(f1)
>>> f1load
NpzFile 'E:\\ls\\savez1.npz' with keys: a3
>>> f1load['a3']
array([21, 22])

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com