Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

3d Numpy array to 2d

I have a 3d matrix like this

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 hstacking (and/or vstacking) them or adding an extra dimension and reshaping (not sure this would work)?

Thanks,

like image 295
poeticcapybara Avatar asked Dec 21 '12 12:12

poeticcapybara


People also ask

How do you reshape an array from 3D to 2D in Python?

reshape() function to convert a 3D array with dimensions (4, 2, 2) to a 2D array with dimensions (4, 4) in Python. In the above code, we first initialize a 3D array arr using numpy. array() function and then convert it into a 2D array newarr with numpy. reshape() function.


1 Answers

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.

like image 186
unutbu Avatar answered Oct 09 '22 08:10

unutbu