私は、ブロック行列(またはより一般的には、d-dim nd.array)の簡単な計算を行いたいと思います。このような何か:絵でnumpyのブロック行列の平均/総和を取る最良の方法は?
、大文字は、3×3ブロック行列を表し、小文字、数字(平均値またはブロック行列の和)です。
現在、私は唯一のループ
import numpy as np
test_matrix = np.arange(81).reshape(9,9)
a = np.zeros((3,3))
for i in range(3):
for j in range(3):
a[k,i,j] = test_matrix[3*i:3*(i+1),3*j:3*(j+1)].mean()
print a
のために使用してこれを行う方法を知っている。しかし、私の行列は次のような、より大きなまたは多次元得れば、それは遅くなる:
test_matrix = np.arange(81*2).reshape(2,9,9)
a = np.zeros((2,3,3))
for k in range(2):
for i in range(3):
for j in range(3):
a[k,i,j] = test_matrix[k,3*i:3*(i+1),3*j:3*(j+1)].mean()
print a
この種のタスクを実行するためのより良い方法はありますか?
ありがとうございます!
リシェイプと和または選択した軸上意味で
(3,3,3,3)に変形して、2つの軸を合計します。 – hpaulj