python 合并npz文件

qaxu7uf2  于 2024-01-05  发布在  Python
关注(0)|答案(1)|浏览(147)

我有一个目录,里面有一堆npz文件,我想合并成一个npz文件。我知道我可以在技术上打开每个文件并连接其中的每个数组,但我正在寻找一个不需要这样做的解决方案。
我找到了这个解决方案:

  1. import numpy as np
  2. data_all = [np.load(fname) for fname in file_list]
  3. merged_data = {}
  4. for data in data_all:
  5. [merged_data.update({k: v}) for k, v in data.items()]
  6. np.savez('new_file.npz', **merged_data)

字符串
但由于某种原因,它实际上并没有合并数据,它只是采用了最后一个打开的npz文件的数据。

koaltpgm

koaltpgm1#

我做了更多的调查,找到了问题的解决方案。首先,在创建每个npz文件之前,我将数据存储在这样的字典中:

  1. data = {'arr_0': arr_0, 'arr_1': arr_1}

字符串
然后我用kwargs将数据保存在npz文件中:
np.savez_compressed('path/to/file/filename.npz', **data
在对每个npz文件执行此操作后,我最终得到了问题开头提到的目录。然后,在另一个Python脚本中,我打开了所有文件并将其名称存储在名为filenames的列表中。现在,对于我的问题的实际解决方案,我这样做了:

  1. data_all = [np.load(fname) for fname in filenames]
  2. merged_data = {}
  3. for k in data_all[0].keys():
  4. merged_data[k] = np.concatenate(list(d[k] for d in data_all))

展开查看全部

相关问题