私は、約50個の変数を持つdict(dsst_mean)を返すループ内で呼び出される関数を持っています。すべての変数は長さ10の配列がnumpyです。Python:numpy配列の多くのdictを同じキーとサイズで連結する
ループは約3000回繰り返します。私は現在、各ループの終わりに向かって連結しているので、各反復で大きくなる「dsst_mean_all」辞書があります。
source = [dsst_mean_all, dsst_mean]
for key in source[0]:
dsst_mean_all[key] = np.concatenate([d[key] for d in source])
これは機能しますが、これは効率的ではありません。私も 'dsst_mean_all' dictの初期化に問題があります。 (私は現在dict.fromkeys()を使ってこれを行っています)。
私の質問はこれをより効率的に行うためのオプションは何ですか?私はリストにdsst_mean dictsを格納し、最後に1つを連結することができると思っています。しかし、私は3000 +メモリのnumpyアレイのdictsを保持することは良い考えであるかどうかは分かりません。私はこれがサイズに依存していることを知っていますが、残念ながら今はそれぞれの 'dsst_mean' dictのサイズを見積もっていません。
ありがとうございました。
効率的ではないだけでなく、反復している辞書を変更するのは非常に危険です。あなたのプログラムは、キーをスキップしたり、キーを2回反復したり、無限ループに陥ることさえあります。 –
建設的な提案はありますか? – InitialConditions
メモリの問題であることがわかるまで、それらをリストとして保存しても問題ありません。それはメモリの面で多くのオーバヘッドを加えるべきではなく、各反復ごとに配列を作成するよりはるかに効率的です。 – user2699