NumPy数组存取
CSV文件
- CSV文件简介
CSV文件(Comma-Separated Value)是一种常见的文件格式,用来存储批量数据。例如:一个表格,存储为CSV文件后,不论表头还是数组,都以逗号分隔的方式,按照表格原来的形状存储。
NumPy导出为CSV文件
- np.savetxt(frame, array, fmt = ‘%. 18e’, delimiter = None);
- frame:文件、字符串产生器,可以是.gz或.bz2的压缩文件;
- array:存入文件的数组;
- fmt:写入文件的格式,例如:%d, %.2f, %.18e;
- delimiter:分割字符串,默认是空格,CSV格式要求改成逗号。
a = np.arange(100).reshape(5, 20)
np.savetxt('a.csv', a, fmt = '%d', delimiter = ',')
NumPy读取CSV文件
- np.loadtst(frame, dtype = np.float, delimiter = Node, unpack = False);
- frame:文件、字符串产生器,可以是.gz或.bz2的压缩文件;
- dtype:数据类型,可选;
- delimiter:分割字符串,默认是空格,CSV格式要求改成逗号;
- unpack:默认为Flase,如果为True,读入属性将分别写入不同变量。
b = np.loadtxt('a.csv', dtype = np.int, delimiter = ',')
CSV文件的局限性
- CSV只能有效存储一维和二维数组;
- np.savetxt()和np.loadtxt()只能有效存取一维和二维数组。
多维数据存取
存储文件
- .tofile(frame, sep = ”, format = ‘%s’);
- frame:文件、字符创;
- sep:数据分割字符串,如果是空串,写入文件为二进制;
- format:写入数据的格式。
a = np.arange(100).reshape(5, 10, 2)
a.tofile('b.dat', sep = ',', format = '%d')
# 这样生成的b.dat文件不包含维度信息,只是一维地把0到99用逗号分隔后排开
读取文件
- np.fromfile(frame, dtype = float, count = - 1, sep = ”)
- frame:文件、字符串;
- dtype:读取的数据类型;
- count:读入元素个数,-1表示读入整个文件;
- sep:数据分割字符串,如果是空串,写入文件为二进制;
a = np.arange(100).reshape(5, 10, 2)
a.tofile("b.dat", dtype = np.int, sep = ',')
c = np.fromfile('b.dat', dtype = np.int, sep = ',')
c
# 输出结果:array([0,1 ,2, ..., 97, 98, 99])
注意:该方法需要读取时知道存入文件时数组的维度和元素类型,也就是说,np.tofile()和np.fromfile()需要配合使用。
NumPy的便捷文件存取
- np.save(frame, array)或np.savez(frame, array)
- frame:文件名,以.npy为扩展名,压缩扩展名为.npz
- array:数组变量
- np.load(fname)
- fname:文件名,以.npy或.npz为扩展名。
a = arange(100).reshape(5, 10, 2)
np.savw('a.npy', a)
b = np.load('a.npy')
# b与a一致