我有一个任意的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
,但它给我提供的是非重叠的子矩阵,而我想要所有可能的子矩阵,无论是否重叠。