How to convert a 3d numpy array to 2d
arrays, multidimensional-array, numpy, numpy-ndarray, python
Solution
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]])
I've posted more general functions for reshaping/unshaping arrays into blocks, here.
Problem
I have a 3d matrix like this ``` np.arange(16).reshape((4,2,2)) array([[[ 0, 1], [ 2, 3]], [[ 4, 5], [ 6, 7]], [[ 8, 9], [10, 11]], [[12, 13], [14, 15]]]) ``` and would like to stack them in grid format, ending up with ``` array([[ 0, 1, 4, 5], [ 2, 3, 6, 7], [ 8, 9, 12, 13], [10, 11, 14, 15]]) ``` Is there a way of doing without explicitly `hstack`ing (and/or `vstack`ing) them or adding an extra dimension and reshaping?