--

numpy 的数据文件的序列化



除了 pickle,对于 numpy 的 ndarray 数据,我们可以用 numpy 自带的 save/savez 以及 load 方法来序列化保存到硬盘上以及读取。

npy 文件可以保存一个 numpy 数据, 用的函数是 save

import numpy as np
x = np.array([[1,2,3], [4,5,6]])
np.save('./123', x)
y = np.load('./123.npy')
print(y)


npz 文件可以保存多个 numpy 数据,用的函数是 savez


import numpy as np
a = np.array([[1, 2, 3], [4, 5, 6]])
b = np.array([1, 2])
np.savez('/tmp/123.npz', a = a, b = b)
data = np.load('/tmp/123.npz')
print(data['a'])

print(data['b'])
data.close()



值得注意的是,如果我们用 np.load(filename)

如果是一个 .npy 文件, 那么 load 返回一个 ndarray
如果是一个 .npz 文件,那么 load 返回一个字典,格式为 {filename : array}, 和 pickle 类似
如果是一个 .npz 文件,那么也支持以下方式访问:

with np.load('foo.npz') as data:
    a = data['a']