Numpy 保存数组信息


保存为 bin 文件

以此方法保存的二进制文件无法保存它的结构信息,统一使用 C 语言的数组排列顺序输出,读取是要指定数据格式以及 reshape 到需要的形状。

1
2
3
4
5
6
numpy.ndarray.tofile(fid, sep='', format='%s')
numpy.fromfile(file, dtype=float, count=-1, sep='')

# e.g.
foo.tofile('foo.bin')
bar = np.fromfile('foo.bin')

保存为 npy 文件

npy 格式是 numpy 特有的格式,每个 npy 文件保存一个数组信息,包括了数组的结构信息。使用 npy 格式可以指定是否使用 pickle 压缩,以及方便数据在 python2python3 之间传输。

1
2
numpy.save(file, arr, allow_pickle=True, fix_imports=True)
numpy.load(file, mmap_mode=None, allow_pickle=True, fix_imports=True, encoding='ASCII')

保存为 npz 文件

npz 格式文件可以将多个 numpy 数组以非压缩的方式储存到一起。

1
2
3
4
5
6
7
numpy.savez(file, *args, **kwds)
# 如果把数组直接传入函数,则数组的索引是 'arr_0', 'arr_1'
# e.g.
numpy.savez('foo.npz', bar, corge=corge)
qux = numpy.load('foo.npz')
qux.files
['arr_0', 'corge']

另一个函数将多个 numpy 数组压缩后保存为 npz 格式文件 ---numpy.savez_compressed


保存为 txt 文件

txt 文件格式能保存 numpy 的一维和二维数组

1
2
numpy.savetxt(fname, X, fmt='%.18e', delimiter=' ', newline='\n', header='', footer='', comments='# ', encoding=None)
numpy.genfromtxt(fname, dtype=<class 'float'>, comments='#', delimiter=None, skip_header=0, skip_footer=0, converters=None, missing_values=None, filling_values=None, usecols=None, names=None, excludelist=None, deletechars=None, replace_space='_', autostrip=False, case_sensitive=True, defaultfmt='f%i', unpack=None, usemask=False, loose=True, invalid_raise=True, max_rows=None, encoding='bytes')