harman
harman

Reputation: 343

Stacking arrays in numpy

I have two arrays:

A = np.array([1, 2, 3])
B = np.array([2, 3, 4])
C = np.stack((A, B), axis=0)

print C.shape
(2, 3)

Shouldn't the shape be (6,) ?

Upvotes: 3

Views: 2758

Answers (2)

Umang Gupta
Umang Gupta

Reputation: 16440

Since you are stacking along axis 0. It is doing something like

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

If you want (6,) shape, you should use np.concatenate.

Upvotes: 1

Ivan86
Ivan86

Reputation: 5708

Using the np.stack() function you can specify which axis would you like to be considered the index axis. So as you can see you will never get a shape of 6, only (2,3) or (3,2) for this example depending on what axis you chose.

See below:

A = np.array([1, 2, 3])
B = np.array([2, 3, 4])
arrays = [A, B]

With this code:

print(np.stack(arrays, axis=0))

you get this output:

[[1 2 3]
 [2 3 4]]

with this code:

print(np.stack(arrays, axis=1))

you get this output:

[[1 2]
 [2 3]
 [3 4]]

Upvotes: 2

Related Questions