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 函数吧。