たとえば、任意の NxM 行列があります。
1 2 3 4 5 6
7 8 9 0 1 2
3 4 5 6 7 8
9 0 1 2 3 4
このマトリックスのすべての 3x3 サブマトリックスのリストを取得したい:
1 2 3 2 3 4 0 1 2
7 8 9 ; 8 9 0 ; ... ; 6 7 8
3 4 5 4 5 6 2 3 4
ネストされた 2 つのループでこれを行うことができます。
rows, cols = input_matrix.shape
patches = []
for row in np.arange(0, rows - 3):
for col in np.arange(0, cols - 3):
patches.append(input_matrix[row:row+3, col:col+3])
しかし、大きな入力行列の場合、これは遅くなります。numpyでこれをより速く行う方法はありますか?
を見てきましたがnp.split
、重複しない部分行列が得られますが、重複に関係なく、可能なすべての部分行列が必要です。