Fusionar bloques de arreglos no superpuestos

Dividí una matriz bidimensional (512×512) en bloques 2×2 usando esta función.

skimage.util.view_as_blocks (arr_in, block_shape) array([[ 0, 1, 2, 3], [ 4, 5, 6, 7], [ 8, 9, 10, 11], [12, 13, 14, 15]]) >>> B = view_as_blocks(A, block_shape=(2, 2)) >>> B[0, 0] array([[0, 1], [4, 5]]) >>> B[0, 1] array([[2, 3], [6, 7]]) 

Ahora necesito colocar los mismos bloques en sus lugares originales después de la manipulación, pero no pude ver ninguna función en skimage para eso.

¿Cuál es la mejor manera de combinar las matrices no superpuestas como era antes?

¡Gracias!

Use transpose / swapaxes para intercambiar los ejes segundo y tercero y luego cambie la forma para fusionar los dos últimos ejes.

 B.transpose(0,2,1,3).reshape(-1,B.shape[1]*B.shape[3]) B.swapaxes(1,2).reshape(-1,B.shape[1]*B.shape[3]) 

Ejecución de la muestra

 In [41]: A Out[41]: array([[ 0, 1, 2, 3], [ 4, 5, 6, 7], [ 8, 9, 10, 11], [12, 13, 14, 15]]) In [42]: B = view_as_blocks(A, block_shape=(2, 2)) In [43]: B Out[43]: array([[[[ 0, 1], [ 4, 5]], [[ 2, 3], [ 6, 7]]], [[[ 8, 9], [12, 13]], [[10, 11], [14, 15]]]]) In [44]: B.transpose(0,2,1,3).reshape(-1,B.shape[1]*B.shape[3]) Out[44]: array([[ 0, 1, 2, 3], [ 4, 5, 6, 7], [ 8, 9, 10, 11], [12, 13, 14, 15]])