Convert numpy 3d array to 2d array in python
Attention: All the below arrays are numpy arrays.
Imagine we have a 3d array (A) with this shape:
A.shape = (a,b,c)
Now we want to convert it to a 2d array (B) with this shape:
B.shape = (a*b, c)
The rule is:
B = A.reshape(-1,c)
When we use -1 in reshape() method, it means we multiply the first two dimensions.
Example — 1:
D = A.reshape(a,-1)
result is a 2d array with this shape:
D.shape = (a, b*c)
Example — 2:
If we want to have a 2d array (E) with the shape:
E.shape = (c, a*b)
From the 3d array (A), where its shape is
A.shape = (a,b,c)
We need first to transpose A that gives:
F = A.transpose(2,0,1)
- where 2 is the index number of c in shape (a, b, c)
- where 0 is the index number of a in shape (a, b, c)
- where 1 is the index number of b in shape (a, b, c)
Which gives a new 3d array (F) with this shape:
F.shape = (c, a, b)
Now we can reshape F to make a 2d array (E) that is:
E = F.reshape(c,-1)
in one line command it is:
E = A.transpose(2,0,1).reshape(c,-1)
Example —3:
Now converting a 2d array to a 1d array:
Assume we have a 2d array (G) with the shape:
G.shape = (a, b)
We need only this:
H = G.reshape(-1)
Now we will have a 1d array (H) with the shape:
H.shape = (a*b)