我有一个任意的 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
我可以用两个嵌套循环来做到这一点:
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
,但这给了我不重叠的子矩阵,而我想要所有可能的子矩阵,而不管重叠。