0
私は以下の多次元配列を持っています。第1の軸は、3次元ベクトル を示す。私は それぞれについて、3行3列の行列x・x 'を計算したいと思います。ブロードバンドを使用してこのコードを高速化する方法は?
私の現在のソリューション:
arr.shape
# (3, 64, 64, 33, 187)
dm = arr.reshape(3,-1)
dm.shape
# (3, 25276416)
cov = np.empty((3,3,dm.shape[1]))
cov.shape
# (3, 3, 25276416)
このforループ反復する25276416すべての上の要素とその周辺1または2分かかります。
for i in range(dm.shape[1]):
cov[...,i] = dm[:,i].reshape(3,1).dot(dm[:,i].reshape(1,3))
cov = cov.reshape((3,) + arr.shape)
cov.shape
# (3, 3, 64, 64, 33, 187)