使用数组进行文件输入和输出
主要介绍三个文件文件操作函数:numpy.save()、numpy.savez()和numpy.save()。
numpy.save(file,arr)
存储的文件是以.npy为后缀,通过notepad无法打开,与该函数对应的读取函数是numpy.load(file)
In [9]: arr = np.random.randn(3,5)
In [10]: np.save('1',arr)#默认后缀为npy
In [12]: arr_c = np.load('1.npy')
In [13]: arr_c
Out[13]:
array([[-1.36173637, -0.07478007, 1.8566077 , -0.17966892, -1.26622013],
[ 1.47084588, -0.20133079, 0.69153004, 0.32772465, -0.9022613 ],
[ 1.13799318, -0.65831657, 1.27792861, -0.02413947, 0.25291231]])
numpy.savez(file,a = arr,b = arr)
该函数可以同时保存多个数组,后缀是.npz,当读取时,会返回一个字典对象,同样适用numpy.load(file)读取
In [14]: arr1 = np.random.randn(3,5)
In [15]: arr2 = np.random.randn(3,5)
In [16]: np.savez('2',a = arr1,b = arr2)#默认后缀.npz
In [18]: arr = np.load('2.npz')
In [21]: arr['a']
Out[21]:
array([[ 2.01769769, -0.01322167, 1.37134569, 0.4148671 , -0.12204338],
[ 0.75605885, 0.66881909, 1.37653915, -1.09329862, 0.5079331 ],
[ 0.72126263, 0.52194174, -0.19633653, 0.47940729, -0.62856856]])
numpy.savetxt(file,arr,fmt='%.18e',delimiter=None)
该函数可以同时保存指定后缀的文件,例如常见的CSV或者TXT文件,其中fmt是数据格式(例如:%d,%.2f等),delimiter是数据间的分隔符。与之相对应的加载数据的函数是numpy.loadtxt(file,dtype = np.float,delimiter = None,unpack = false)
In [27]: np.savetxt('aa.txt',arr,delimiter = ',')#逗号分隔
In [28]: np.loadtxt('aa.txt',delimiter = ',')
Out[28]:
array([[ 6., 28., 11., 86., 81.],
[84., 99., 35., 78., 86.],
[22., 22., 47., 63., 57.]])