如何将数组附加到现有的“.npz”文件?

Cic*_*lio 7 python numpy save

我有以下代码,它生成 mat 文件(.npz格式):

import numpy as np
x = np.arange(10)
np.savez('mat',x)
Run Code Online (Sandbox Code Playgroud)

现在我想将另一个数组附加到现有文件中:

y = np.arange(21)
np.savez('mat',y) 
Run Code Online (Sandbox Code Playgroud)

但是,它用 y 替换了 x 数组。我想在文件中包含这两个数组。此外,我不想同时将它们写入文件。

Ton*_*sic 3

我以帖子上的评论作为开始,下面的代码似乎可以满足您的要求。(我只使用 python 3.6 和基本模块,它可能适用于其他 python 版本)

import zipfile
import io
import os
import numpy as np

test_np1 = np.random.random(100)
test_np2 = np.random.random(100)

# initial file
filename = 'npfile.npz'
try:
    np.savez_compressed(filename, test_np1=test_np1)

    with np.load(filename) as loaded_npz:
        print(np.array_equal(test_np1, loaded_npz['test_np1']))

    bio = io.BytesIO()
    np.save(bio, test_np2)
    with zipfile.ZipFile(filename, 'a') as zipf:
        # careful, the file below must be .npy
        zipf.writestr('test_np2.npy', data=bio.getbuffer().tobytes())

    with np.load(filename) as loaded_npz:
        print(np.array_equal(test_np1, loaded_npz['test_np1']))
        print(np.array_equal(test_np2, loaded_npz['test_np2']))
finally:
    os.remove(filename)
Run Code Online (Sandbox Code Playgroud)