我有一个Python字典列表。字典中的元素是numpy数组。例如:
out = []
import numpy as np
d = dict()
d["test1"] = np.random.rand(10,64,80)
d["test2"] = np.random.rand(5,64,80)
out.append(d)
d = dict()
d["test1"] = np.random.rand(13,64,80)
d["test2"] = np.random.rand(29,64,80)
d["test3"] = np.random.rand(30,64,80)
out.append(d)
d = dict()
d["test1"] = np.random.rand(2,64,80)
d["test2"] = np.random.rand(27,64,80)
d["test3"] = np.random.rand(25,64,80)
out.append(d)
现在,我想按列表中出现的顺序连接所有具有相同键的numpy数组。这意味着最终的字典应如下所示:
final = dict()
final["test1] = np.concatenate((out[0]["test1"], out[1]["test1"], out[2]["test1"]), axis=0)
final["test2] = np.concatenate((out[0]["test2"], out[1]["test2"], out[2]["test2"]), axis=0)
final["test3] = np.concatenate((out[1]["test3"], out[2]["test3"]), axis=0)
我不知道列表中的元素数量。我怎样才能做到这一点?由于numpy数组很大,因此最好以减少使用的内存量的方式来实现。
答案 0 :(得分:0)
您可以循环out
列表的每个字典,并合并所有用numpy数组填充字段的所有字典。 例如
final = {
k: np.concatenate([dct[k] for dct in out if dct.get(k)], axis=0)
for k in ("test1", "test2", "test3",)
}