簡體   English   中英

將多個.npz 文件合並為單個.npz 文件

[英]Merging multiple .npz files into single .npz file

我在具有相同性質的文件夾中有多個.npz 文件,我想將所有 my.npz 文件 append 放入給定文件夾中的單個.npz 文件

我試過下面的代碼來實現這一點,但它似乎沒有將 multiple.npz 文件附加到單個 npz 文件。 這是代碼

import numpy as np
file_list = ['image-embeddings\img-emb-1.npz', 'image-embeddings\img-emb-2.npz']
data_all = [np.load(fname) for fname in file_list]
merged_data = {}
for data in data_all:
   [merged_data.update({k: v}) for k, v in data.items()]
np.savez('new_file.npz', **merged_data)

其中 img-emb-1.npz 具有不同的值和 img-emb-2.npz 具有不同的值

也許嘗試以下構造merged_data

arrays_read = dict(
    chain.from_iterable(np.load(file(arr_name)).items() for arr_name in arrays.keys())
)

完整示例:

from itertools import chain
import numpy as np

file = lambda name: f"arrays/{name}.npz"

# Create data
arrays = {f"arr{i:02d}": np.random.randn(10, 20) for i in range(10)}

# Save data in separate files
for arr_name, arr in arrays.items():
    np.savez(file(arr_name), **{arr_name: arr})

# Read all files into a dict
arrays_read = dict(
    chain.from_iterable(np.load(file(arr_name)).items() for arr_name in arrays.keys())
)

# Save into a single file
np.savez(file("arrays"), **arrays_read)

# Load to compare
arrays_read_single = dict(np.load(file("arrays")).items())

assert arrays_read.keys() == arrays_read_single.keys()
for k in arrays_read.keys():
    assert np.array_equal(arrays_read[k], arrays_read_single[k])

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM