如何将numpy数组列表保存到单个文件中并将文件加载回原始形式[duplicate]

edqdpe6u  于 2023-02-12  发布在  其他
关注(0)|答案(1)|浏览(105)
    • 此问题在此处已有答案**:

NumPy save some arrays at once(2个答案)
三年前关闭了。
我目前正在尝试将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通过遍历list将它们合并到一个文件中,但是还有其他方法吗?我正在尝试保存函数model.get_weights()返回的权重,这是ndarray的列表,在从保存的文件中检索权重后,我打算使用model.set_weights(np_list)将这些权重加载到另一个模型中。因此,列表的格式必须保持不变。如果有人有优雅的方法,请告诉我。

t5zmwmid

t5zmwmid1#

我会选择np.savenp.load,因为它与平台无关,比savetxt快,并且可以处理数组列表,例如:

import numpy as np

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

这是针对np.savenp.load的文档。在此答案中,您可以更好地讨论How to save and load numpy.array() data properly?

编辑

就像@AlexP提到的numpy >= v1.24.2不支持不同大小和类型的数组,所以这就是为什么强制转换是必要的。

相关问题