Как добавить новый массив в существующий файл npz стандартным способом? - PullRequest
0 голосов
/ 28 апреля 2020

У меня есть функция, которая записывает массив в сжатый *. Npz файл:

def save_a(file):
    np.savez_compressed(file, a=[[1, 2, 3]])

Я хочу создать функцию, вызывающую функцию save_a(), а затем добавить другую массив в файл (например, с метаданными):

def save_a_b(file):
    save_a(file)
    np.savez_compressed(file, b=[len(save_a.__name__)])

К сожалению, когда я пытаюсь использовать функцию save_a_b(), у меня перезаписывается прежний массив:

buffer = io.BytesIO()
save_a_b(buffer)
buffer.seek(0)
with np.load(buffer) as fh:
    for name in fh:
        print(name, fh[name])

Мне нужно реализовать его без использования:

  • частных методов,
  • взлома формата .npz , если только его спецификация не гарантирует обратной совместимости в будущем.

Я предпочитаю решение, применимое как к файловым объектам, так и к str путям.

...