CSV(Comma-Separated Value,逗号分隔值),一种常见的文件格式,用来存储批量数据。
np.savetxt(frame,array,fmt='%.18e',delimiter=None) #存储
——frame:文件、字符串或产生器,可以是.gz或.bz2的压缩文件
——array:存入文件的数组
——fmt:写入文件的格式,例如:%d%.2f%.18e(科学计数法,保留18小数的一个浮点数形式)
——delimiter:分割字符串,默认是任何空格
例如:np.savetxt('a.csv',a,fmt='%d',delimiter=',')
np.loadtxt(frame,dtype=np.float,delimiter=None,unpack=False)
——frame:文件、字符串或产生器,可以是.gz或.bz2的压缩文件
——dtype:数据类型,可选
——delimiter:分隔字符串,默认是任何空格
——unpack:如果True,读入属性将分别写入不同变量
b = np.loadtxt('a.csv',delimiter=',')
b
Out[6]:
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., 24., 25., 26., 27., 28., 29., 30., 31., 32.,
33., 34., 35., 36., 37., 38., 39.],
[40., 41., 42., 43., 44., 45., 46., 47., 48., 49., 50., 51., 52.,
53., 54., 55., 56., 57., 58., 59.],
[60., 61., 62., 63., 64., 65., 66., 67., 68., 69., 70., 71., 72.,
73., 74., 75., 76., 77., 78., 79.],
[80., 81., 82., 83., 84., 85., 86., 87., 88., 89., 90., 91., 92.,
93., 94., 95., 96., 97., 98., 99.]])
b = np.loadtxt('a.csv',dtype=np.int,delimiter=',')
a.tofile(frame,sep='',format='%s')
——frame:文件、字符串
——sep:数据分割字符串,如果是空串或者不指定,写入文件为二进制,无法用编译器看懂
——format:写入数据的格式
与CSV不同,结果只是逐一列出,没有维度格式
np.fromfile(frame,dtype=float,count=-1,sep='')
——frame:文件、字符串
——dtype:读取的数据类型
——count:读入元素个数,-1表示读入整个文件
——sep:数据分割字符串,如果是空串,写入文件为二进制
a = np.arange(100).reshape(5,10,2)
a.tofile("b.bat",sep=",",format='%d')
c = np.fromfile("b.dat",dtype=np.int,sep=",")
c
Out[14]:
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, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33,
34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50,
51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67,
68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84,
85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99])
c = np.fromfile("b.dat",dtype=np.int,sep=",").reshape(5,10,2)
二进制:
a = np.arange(100).reshape(5,10,2)
a.tofile("b.dat",format='%d')
c = np.fromfile('b.dat',dtype=np.int).reshape(5,10,2)
c
Out[20]:
array([[[ 0, 1],
[ 2, 3],
[ 4, 5],
[ 6, 7],
[ 8, 9],
[10, 11],
[12, 13],
[14, 15],
[16, 17],
[18, 19]],
…………
[[80, 81],
[82, 83],
[84, 85],
[86, 87],
[88, 89],
[90, 91],
[92, 93],
[94, 95],
[96, 97],
[98, 99]]])
需要注意的是,该方法需要读取时知道存入文件时,数组的维度和元素类型
a.tofile()和np.fromfile()需要配合使用
np.save(fname,array)或np.savez(fname,array)
——fname:文件名,以.npy为扩展名,压缩扩展名为.npz
——array:数组变量
np.load(fname) #把文件读回来,并还原数组的维度等相关信息
——fname:文件名,以.npy为扩展名,压缩扩展名为.npz
a = np.arange(100).reshape(5,10,2)
np.save("a.npy",a)
b = np.load('a.npy')
b
Out[24]:
array([[[ 0, 1],
[ 2, 3],
[ 4, 5],
[ 6, 7],
[ 8, 9],
[10, 11],
[12, 13],
[14, 15],
[16, 17],
[18, 19]],
…………
[[80, 81],
[82, 83],
[84, 85],
[86, 87],
[88, 89],
[90, 91],
[92, 93],
[94, 95],
[96, 97],
[98, 99]]])