首页 > 解决方案 > 如何将 numpy 数组列表保存到单个文件中并将文件加载回原始形式

问题描述

我目前正在尝试将 numpy 数组列表保存到单个文件中,此类列表的示例可以是以下形式

import numpy as np
np_list = []
for i in range(10):
    if i % 2 == 0:
        np_list.append(np.random.randn(64))
    else:
        np_list.append(np.random.randn(32, 64))

savez我可以通过遍历列表将所有这些使用合并到一个文件中,但是还有其他方法吗?我正在尝试保存函数返回的权重model.get_weights(),这是一个列表,ndarray在从保存的文件中检索权重之后,我打算将这些权重加载到另一个模型中model.set_weights(np_list)。因此列表的格式必须保持不变。让我知道是否有人有这样做的优雅方式。

标签: pythonnumpytensorflowtf.keras

解决方案


我会选择np.saveandnp.load因为它独立于平台,比数组列表更快savetxt并且可以与数组列表一起使用,例如:

import numpy as np

a = [
    np.arange(100),
    np.arange(200)
]
np.save('a.npy', a, allow_pickle=True)
b = np.load('a.npy', allow_pickle=True)

这是np.savenp.load的文档。在这个答案中,您可以找到更好的讨论如何正确保存和加载 numpy.array() 数据?


推荐阅读