8.10.保存和加载
import numpy as np
import os
Linux 5.4.0-74-generic
Python 3.9.5 @ GCC 7.3.0
Latest build date 2021.06.18
numpy version: 1.20.3
保存为 npy
格式
np.save(file, arr, allow_pickle=True, fix_imports=True)
将一个numpy数组储存为一个.npy
格式的二进制文件。
file
:文件名或者文件对象。如果是文件名且没有后缀,则会自动添加后缀.npy
。arr
:被存储的数组。allow_pickle
:布尔值,如果为True
,则使用Python pickle。有时候为了安全性和可移植性而不使用pickle。fix_imports
:用于 Python 3 的数组导入到 Python 2 的情形。
x = np.arange(20).reshape(4, 5)
save_path = "array"
# 保存时会自动添加.npy后缀
np.save(save_path, x)
# npy文件被保存在当前工作目录
[i for i in os.listdir() if i.endswith("npy")]
['array.npy']
保存为 npz
格式
np.savez(file, *args, **kwds)
将多个numpy数组储存为一个.npz
格式的二进制文件。
file
:文件名或者文件对象。如果是文件名且没有后缀,则会自动添加后缀.npz
。args
:被存储的数组。这些数组的名字将被自动命名为arr_0/arr_1/...
。如果没有名字,则完全无法知晓这些数组的区别。kwds
:将被存储的数组,这些关键字参数就是键的名字。
保存 .npz 文件
x = np.arange(20).reshape(4, 5)
save_path = "array"
np.savez(save_path, x, x)
np.savez_compressed(file, *args, **kwds)
将多个 NumPy 数组压缩储存为一个.npz
格式的文件。
读入 .npy
或 .npz
文件
np.load(file, mmap_mode=None, allow_pickle=False, fix_imports=True, encoding='ASCII')
从二进制文件中读取数组,返回一个数组、元组或者字典(当二进制文件是savez
生成时)。
file
:存放数组的文件路径或者文件对象。mmap_mode
:如果不是None
,则memory-map该文件。此时对数组的修改会同步到文件上。当读取大文件的一小部分时很有用,因为它不必一次读取整个文件。可选值为None
/'r+'
/'r'
/'w+'
/'c'
。allow_pickle
:布尔值,如果为True
,·则使用Python pickle。有时候为了安全性和可移植性而不使用pickle。fix_imports
:用于 Python 3 的数组导入到 Python 2 的情形。encoding
:只用于 Python 2,读取 Python 2 字符串。
读入 .npy 文件
np.load("array.npy", allow_pickle=True)
array([[ 0, 1, 2, 3, 4],
[ 5, 6, 7, 8, 9],
[10, 11, 12, 13, 14],
[15, 16, 17, 18, 19]])
读入 .npz 文件
np.load("array.npz", allow_pickle=True)
<numpy.lib.npyio.NpzFile at 0x7f4c44651eb0>
保存为文本文件
np.savetxt(fname, X, ...)
将一个 NumPy 数组储存为一个文本文件。
np.savetxt(fname, X, fmt='%.18e', delimiter=' ', newline=' ', header='',
footer='', comments='# ', encoding=None)
保存文本文件
x = np.arange(20).reshape(4, 5)
save_path = "array"
np.savetxt(save_path, x)
ndarray.tofile(fid, sep="", format="%s")
将数组保存为文本文件或二进制文件。
fid
:一个 file 对象或者文件名。sep
:一个字符串,指定分隔符。如果为空或者空字符串,则按照二进制的方式写入,等价于file.write(a.tobytes())
。format
:一个字符串,指定了数值的格式化方式。
读入文本文件
np.loadtxt(fname, dtype, ...)
从文本文件加载 NumPy 数组。
np.loadtxt(fname, dtype=float, comments='#', delimiter=None,
converters=None, skiprows=0, usecols=None, unpack=False, ndmin=0,
encoding='bytes', max_rows=None, like=None)
读入文本文件
np.loadtxt("array")
array([[ 0., 1., 2., 3., 4.],
[ 5., 6., 7., 8., 9.],
[10., 11., 12., 13., 14.],
[15., 16., 17., 18., 19.]])