Array Numpy 3d a 2d

Tengo una matriz 3d como esta

arange(16).reshape((4,2,2)) array([[[ 0, 1], [ 2, 3]], [[ 4, 5], [ 6, 7]], [[ 8, 9], [10, 11]], [[12, 13], [14, 15]]]) 

y me gustaría astackrlos en formato de cuadrícula, terminando con

 array([[ 0, 1, 4, 5], [ 2, 3, 6, 7], [ 8, 9, 12, 13], [10, 11, 14, 15]]) 

¿Hay una forma de hacerlo sin tener que astackrlos explícitamente (o vstacking) o agregar una dimensión adicional y volver a formar (no estoy seguro de que esto funcione)?

Gracias,

 In [27]: x = np.arange(16).reshape((4,2,2)) In [28]: x.reshape(2,2,2,2).swapaxes(1,2).reshape(4,-1) Out[28]: array([[ 0, 1, 4, 5], [ 2, 3, 6, 7], [ 8, 9, 12, 13], [10, 11, 14, 15]]) 

He publicado más funciones generales para remodelar / desformar arrays en bloques, aquí .