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.]])
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持毛票票。