簡體   English   中英

通過Python字典連接numpy數組

[英]Concatenate numpy arrays over Python dicts

我有一個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數組非常大,因此最好以減少使用的內存量的方式進行設置。

您可以循環out列表的每個字典,並連接所有用numpy數組填充字段的所有字典。 例如

final = {
   k: np.concatenate([dct[k] for dct in out if dct.get(k)], axis=0)
   for k in ("test1", "test2", "test3",)
}

暫無
暫無

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

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