numpy.stack() in Python (original) (raw)

NumPy is a famous Python library used for working with arrays. One of the important functions of this library is stack().

Important points:

Syntax: numpy.stack(arrays, axis=0, out=None)

Parameters:

Example #1 : stacking two 1d arrays

Python

import numpy as np

a = np.array([ 1 , 2 , 3 ])

b = np.array([ 4 , 5 , 6 ])

c = np.stack((a, b),axis = 0 )

print (c)

output –

array([[1, 2, 3],
[4, 5, 6]])

Notice, output is a 2-D array. They are stacked row-wise. Now, let’s change the axis to 1.

Python

output –

array([[1, 4],
[2, 5],
[3, 6]])

Here, stack() takes 2 1-D arrays and stacks them one after another as if it fills elements in new array column-wise.

Python

output –

array([[1, 4],
[2, 5],
[3, 6]])

-1 represents ‘last dimension-wise’. Here 2 axis are possible. 0 and 1. So, -1 is same as 1.

Example #2 : stacking two 2d arrays

Python3

x = np.array([[ 1 , 2 , 3 ],

`` [ 4 , 5 , 6 ]])

y = np.array([[ 7 , 8 , 9 ],

`` [ 10 , 11 , 12 ]])

1. stacking with axis=0

Python3

output –

array([[[ 1, 2, 3],
[ 4, 5, 6]],

[[ 7, 8, 9],
[10, 11, 12]]])

Imagine as if they are stacked one after another and made a 3-D array.

2. stacking with axis=1

Python3

Output – 3D array. 1st dimension has 1st rows. 2nd dimension has 2nd rows. [Row-wise stacking]

array([[[ 1, 2, 3],
[ 7, 8, 9]],

[[ 4, 5, 6],
[10, 11, 12]]])

3. stacking with axis =2

Python3

Output – 3D array. 1st dimension has 1st rows. 2nd dimension has 2nd rows. [Column-wise stacking]

array([[[ 1, 7],
[ 2, 8],
[ 3, 9]],

[[ 4, 10],
[ 5, 11],
[ 6, 12]]])

Example #2 : stacking more than two 2d arrays

1. with axis=0 : Just stacking.

Python3

x = np.array([[ 1 , 2 , 3 ],

`` [ 4 , 5 , 6 ]])

y = np.array([[ 7 , 8 , 9 ],

`` [ 10 , 11 , 12 ]])

z = np.array([[ 13 , 14 , 15 ],

`` [ 16 , 17 , 18 ]])

np.stack((x,y,z),axis = 0 )

output –

array([[[ 1, 2, 3],
[ 4, 5, 6]],

[[ 7, 8, 9],
[10, 11, 12]],

[[13, 14, 15],
[16, 17, 18]]])

2. with axis =1 (row-wise stacking)

Python3

output –

array([[[ 1, 2, 3],
[ 7, 8, 9],
[13, 14, 15]],

[[ 4, 5, 6],
[10, 11, 12],
[16, 17, 18]]])

3. with axis =2 (column-wise stacking)

Python

output-

array([[[ 1, 7, 13],
[ 2, 8, 14],
[ 3, 9, 15]],

[[ 4, 10, 16],
[ 5, 11, 17],
[ 6, 12, 18]]])

Example #3 : stacking two 3d arrays

1. axis=0. Just stacking

Python3

m = np.array([[[ 1 , 2 , 3 ],

`` [ 4 , 5 , 6 ],

`` [ 7 , 8 , 9 ]],

`` [[ 10 , 11 , 12 ],

`` [ 13 , 14 , 15 ],

`` [ 16 , 17 , 18 ]]])

n = np.array([[[ 51 , 52 , 53 ],

`` [ 54 , 55 , 56 ],

`` [ 57 , 58 , 59 ]],

`` [[ 110 , 111 , 112 ],

`` [ 113 , 114 , 115 ],

`` [ 116 , 117 , 118 ]]])

np.stack((m,n),axis = 0 )

output –

array([[[[ 1, 2, 3],
[ 4, 5, 6],
[ 7, 8, 9]],

[[ 10, 11, 12],
[ 13, 14, 15],
[ 16, 17, 18]]],

[[[ 51, 52, 53],
[ 54, 55, 56],
[ 57, 58, 59]],

[[110, 111, 112],
[113, 114, 115],
[116, 117, 118]]]])

2. with axis=1

Python3

output – Imagine as if the resultant array takes 1st plane of each array for 1st dimension and so on.

array([[[[ 1, 2, 3],
[ 4, 5, 6],
[ 7, 8, 9]],

[[ 51, 52, 53],
[ 54, 55, 56],
[ 57, 58, 59]]],

[[[ 10, 11, 12],
[ 13, 14, 15],
[ 16, 17, 18]],

[[110, 111, 112],
[113, 114, 115],
[116, 117, 118]]]])

3. with axis = 2

Python3

output –

array([[[[ 1, 2, 3],
[ 51, 52, 53]],

[[ 4, 5, 6],
[ 54, 55, 56]],

[[ 7, 8, 9],
[ 57, 58, 59]]],

[[[ 10, 11, 12],
[110, 111, 112]],

[[ 13, 14, 15],
[113, 114, 115]],

[[ 16, 17, 18],
[116, 117, 118]]]])

4. with axis = 3

Python3

output –

array([[[[ 1, 51],
[ 2, 52],
[ 3, 53]],

[[ 4, 54],
[ 5, 55],
[ 6, 56]],

[[ 7, 57],
[ 8, 58],
[ 9, 59]]],

[[[ 10, 110],
[ 11, 111],
[ 12, 112]],

[[ 13, 113],
[ 14, 114],
[ 15, 115]],

[[ 16, 116],
[ 17, 117],
[ 18, 118]]]])