結合分布のエントロピーを計算するコードがあり、histogram2d を使用して、サイズ 20000 x 300 の行列 (およびそのような大規模なデータセット) のすべての列の **ペアワイズ ** 結合エントロピーを計算しています。つまり、n * n-1/2 計算
ほとんどの時間は、関節数の計算に費やされます。単純な cProfiling により、次のコストのかかる関数が明らかになります。
histogram2d -> histogramdd -> atleast_2d -> asarray -> numpy.core.multiarray.array
87% 85% | 40% 38% 39%
|--> digitize
10 %
np.digitize がカウントのほとんどの作業を行っていると思いました。しかし、かなりの時間が asarray のような他の関数に費やされているようです! 誰かがこれらの計算をより速く、より簡単な方法で行う方法を指摘できますか? (つまり、明らかに、C/C++ でヒストグラム関数を書くように指示していませんか?)
前もって感謝します。この質問は、以前に投稿した MI の計算に関連しています : numpy を使用してペアワイズ相互情報を計算する最適な方法