53.1_NumPy的save函数和load函数
53.1 NumPy的save函数和load函数
NumPy有np.save函数和np.load函数。使用这些函数可以保存和加载ndarray实例。代码如下所示。
import numpy as np
x = np.array([1, 2, 3])
np.save('test.npy', x)
x = np.load('test.npy')
print(x)运行结果
[123]
首先是 np.save 函数。通过这个函数,我们可以将 ndarray 实例保存到外部文件中。然后使用 np.load 函数来加载数据。这样就可以保存和加载单个 ndarray 实例了。

上面的代码将文件保存为test.npy。如上面的例子所示,文件的扩展名必须是 .npy。如果没有为文件加 .npy 这个扩展名,那么 .npy 将被自动添加到文件名的末尾。
接下来保存和加载多个ndarray实例。为此我们需要使用np.savez函数和np.load函数。下面是使用示例。
$\begin{array}{l}\mathrm{x1} = \mathrm{np.array}([1,2,3])\\ \mathrm{x2} = \mathrm{np.array}([4,5,6]) \end{array}$
np.savez('test.npz',x1=x1,x2=x2)
arrays $=$ np.load('test.npz')
$\mathrm{x1} =$ arrays['x1']
$\mathrm{x2} =$ arrays['x2']
print(x1)
print(x2)运行结果
[123]
[456]
上面的代码使用np.savez('test.npz', x1=x1, x2=x2)保存了多个ndarray实例。我们可以通过x1=x1和x2=x2将实例作为“关键字参数”传给函数,这样在加载实例时,数据就可以通过arrays['x1']和arrays['x2']取出。另外,在使用np.savez函数时,要保存的文件的扩展名必须是.npz。
接下来对Python字典应用上面的操作。下面是实际的代码示例。
$\begin{array}{l}\mathrm{x1} = \mathrm{np.array}([1,2,3])\\ \mathrm{x2} = \mathrm{np.array}([4,5,6])\\ \mathrm{data} = \{\mathrm{'x1}:\mathrm{x1},\mathrm{'x2}:\mathrm{x2}\} \end{array}$ np.savez('test.npz',**data) arrays $=$ np.load('test.npz') x1 $=$ arrays['x1'] x2 $=$ arrays[x2'] print(x1) print(x2)运行结果
[123]
[456]
上面的代码使用np.savez('test.npz',data)保存了字典。在传递参数时,使用data这种带两个星号的方式,可以展开字典并将其作为“关键字参数”传给函数。
以上就是NumPy中用于执行保存和加载操作的函数的使用方法,接下来我们会使用这里介绍的函数来实现将DeZero的参数保存到外部文件的功能。首先要做的是将存在于Layer类中的Parameter“扁平地”取出。

函数 np.savez_compressed 与 np.savez 的作用相同。该函数不但与 np.savez 的用法相同,还会压缩并保存文件。既然如此,我们就来使用这个 np.savez_compressed 函数吧。