csv文件(comma-Separated Value,逗号分隔值):一种文件格式存储批量数据的文件。
局限性:只能有效存储一维和二维数组。
Numpy读取和写入函数
读取:np.loadtxt(frame, dtype=np.float, delimiter=None, unpack=False)
frame
参数表示读入的来源,文件、字符或产生器,可以是.gz或.bz2d的压缩文件
dtype
数据类型
delimiter
表示分隔字符串,默认为空格 若读入文件为csv则应设置为',
'
unpack
如果为True,读入属性将分别写入不同变量,默认False
写入:np.savetxt(frame, array, fmt='%.18', delimiter=None)
frame
参数表示文件、字符或产生器,可以是.gz或.bz2d的压缩文件。
array
参数表示具有数据的数组。
fmt
参数表示写入文件的格式,例如:%d %.2f %.18e。
delimiter
参数表示分隔字符串,默认为空格。保存为csv文件则应设置为',
'。
上述两个函数np.loadtxt() np.savetxt()
都只能有效存取一维和二维数组
多维数据的存取函数
对于ndarray
数组对象a
有写入函数
a.tofile(frame, sep='', format='%s')
frame
:文件、字符串名
sep
:数据分割字符串,如果分隔字符串不指定,即为空串的时候,写入文件为二进制
format
:写入数据的格式。
a = np.arange(24).reshape((2,3,4))
a.tofile("a.dat",sep=',', format='%d')
使用记事本打开a.dat
文件
a.tofile("b.dat", format='%d')
读取函数:
np.fromfile(frame, dtype=float, count=-1, sep='')
frame
:文件、字符串
dtype
:读取的数据类型,默认dtype=float
count
:读入元素个数,-1表示读入整个文件
sep
:数据分割字符串,如果分隔字符串不指定,即为空串的时候,写入文件为二进制
读入的文件为一维数组,故需要二维或者多维数组时需使用.reshape()函数设置
a1=np.fromfile("a.dat",dtype=np.int, sep=',')
a1
out:
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])
a1.reshape(2,3,4)
Out:
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]]])
b1=np.fromfile("b.dat", dtype=np.int, )
b1
Out:
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])
由此可见:该方法读取是需要知道存取文件数组的维度和元素类型,故需配合使。
numpy便捷文件存取
np.save(fname, array)
或np.savez(fname, array)
(压缩格式 .npz)
np.load(fname)
需注意文件名要使用numpy自定义的 .npy数据格式
np.save("a.npy", a)
数组元信息,数据类型,维度存在第一行中。
aload=np.load("a.npy")
aload
Out:
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]]])