Python合并npz文件

时间:2019-05-29 07:31:35

标签: python numpy

反正是否有在python中合并npz文件的问题。在我的目录中,我有output1.npz和output2.npz。

我想要一个新的npz文件,该文件合并两个npz文件中的数组。

3 个答案:

答案 0 :(得分:1)

使用numpy.load('output1.npz')numpy.load('output2.npz')将两个文件都加载为数组a1,a2。然后使用a3 =[*a1,*a2]合并它们。最后,通过numpy.savez('output.npz',a3)

输出

答案 1 :(得分:0)

如果您有3个npz文件(“ Data_chunk1.npz”,“ Data_chunk2.npz”和“ Data_chunk3.npz”),它们都包含相同数量的数组(在我的情况下为7个不同的数组),那么您可以执行< / p>

import numpy as np

# Load the 3 files
data_1 = np.load('Data_chunk1.npz')
data_2 = np.load('Data_chunk2.npz')
data_3 = np.load('Data_chunk3.npz')

# Merge each of the 7 arrays of the 3 files
arr_0 = np.concatenate([data_1['arr_0'], data_2['arr_0'], data_3['arr_0']])
arr_1 = np.concatenate([data_1['arr_1'], data_2['arr_1'], data_3['arr_1']])
arr_2 = np.concatenate([data_1['arr_2'], data_2['arr_2'], data_3['arr_2']])
arr_3 = np.concatenate([data_1['arr_3'], data_2['arr_3'], data_3['arr_3']])
arr_4 = np.concatenate([data_1['arr_4'], data_2['arr_4'], data_3['arr_4']])
arr_5 = np.concatenate([data_1['arr_5'], data_2['arr_5'], data_3['arr_5']])
arr_6 = np.concatenate([data_1['arr_6'], data_2['arr_6'], data_3['arr_6']])

# Save the new npz file
np.savez('Data_new.npz', arr_0, arr_1, arr_2, arr_3, arr_4, arr_5, arr_6 )

答案 2 :(得分:0)

你现在肯定已经解决了这个问题(1 年零 10 个月后......),但我刚刚遇到了同样的问题,并找到了一个可能值得在这里分享的解决方案。

一般来说,如果你有一个 .npz 文件列表 file_list = ['file_0.npz', 'file_1.npz', ...],最终也有特定的命名,即文件是使用 **kwargs 而不是简单的 *args 创建的,你可以执行以下操作:

import numpy as np

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)

我使用的是 python 3.7.7 和 numpy 1.18.1。

干杯!