Numpy之文件存取的示例代码
上一篇中我们简要带过了Numpy的数据持久化,在这一篇中将要具体说明Numpy提供的文件存取功能。Numpy可以将数组保存至二进制文件、文本文件,同时支持将多个数组保存至一个文件中。
1.np.tofile()&np.fromfile()
importnumpyasnp
importos
os.chdir("d:\\")
a=np.arange(0,12)
a.reshape(3,4)
array([[0,1,2,3],
[4,5,6,7],
[8,9,10,11]])
a.tofile("a.bin")#保存至a.bin
b=np.fromfile("a.bin",dtype=np.int32)#从文件中加载数组,错误的dtype会导致错误的结果
array([0,1,2,3,4,5,6,7,8,9,10,11])
b.reshape(3,4)
array([[0,1,2,3],
[4,5,6,7],
[8,9,10,11]])
#读取的数据将为一维数组,需要使用reshape改变其数组结构
2.np.save()&np.load()&np.savez()
load()和save()用Numpy专用的二进制格式保存数据,它们会自动处理元素类型和形状等信息。savez()提供了将多个数组存储至一个文件的能力,调用load()方法返回的对象,可以使用数组名对各个数组进行读取。默认数组名arr_0,arr_1,arr_2......
np.save("a.npy",a.reshape(3,4))
c=np.load("a.npy")
c
array([[0,1,2,3],
[4,5,6,7],
[8,9,10,11]])
多个数组存储至一个文件:
a=np.array([[1,2,3],[4,5,6]])
b=np.arange(0,1.0,0.1)
c=np.sin(b)
np.savez("result.npz",a,b,sin_arr=c)#使用sin_arr命名数组c
r=np.load("result.npz")#加载一次即可
r["arr_0"]
array([[1,2,3],
[4,5,6]])
r["arr_1"]
array([0.,0.1,0.2,0.3,0.4,0.5,0.6,0.7,0.8,0.9])
r["sin_arr"]
array([0.,0.09983342,0.19866933,0.29552021,0.38941834,
0.47942554,0.56464247,0.64421769,0.71735609,0.78332691])
可以使用解压软件解压缩.npz文件会得到存储的各个数组对应的.npy文件以便进行遍历。
3.savetxt()&loadtxt()
a=np.arange(0,12,0.5).reshape(4,-1)
a
array([[0.,0.5,1.,1.5,2.,2.5],
[3.,3.5,4.,4.5,5.,5.5],
[6.,6.5,7.,7.5,8.,8.5],
[9.,9.5,10.,10.5,11.,11.5]])
np.savetxt("a.txt",a)
np.loadtxt("a.txt")
array([[0.,0.5,1.,1.5,2.,2.5],
[3.,3.5,4.,4.5,5.,5.5],
[6.,6.5,7.,7.5,8.,8.5],
[9.,9.5,10.,10.5,11.,11.5]])
np.savetxt("a.txt",a,fmt="%d",delimiter=",")#指定存储数据类型为整型,分隔符为,
np.loadtxt("a.txt",delimiter=',')#以,分隔符读取
array([[0.,0.,1.,1.,2.,2.],
[3.,3.,4.,4.,5.,5.],
[6.,6.,7.,7.,8.,8.],
[9.,9.,10.,10.,11.,11.]])
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持毛票票。