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