yash
yash

Reputation: 380

np.concatenate doesn't allow sequential concatenation

I have been trying to concatenate two 1D arrays using np.concatenate but it doesn't work as expected. Can someone please let me know where I'm making a mistake?

My code is as follows:

x = np.array([1.13793103, 0.24137931, 0.48275862, 1.24137931, 1.00000000, 1.89655172])
y = np.array([0.03666667, 0.00888889, 0.01555556, 0.04      , 0.03222222, 0.06111111])

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

print(z)
array([1.13793103, 0.24137931, 0.48275862, ... 0.04, 0.03222222, 0.06111111])

print(f'{type(x)} {type(y)} {type(z)}')
<class 'numpy.ndarray'> <class 'numpy.ndarray'> <class 'numpy.ndarray'>

print(f'{x.shape} {y.shape} {z.shape}')
(6,) (6,) (12,)

So, instead of adding y as a new array, it's joining the two arrays which isn't my intention. I am looking for something as follows:

array([1.13793103, 0.24137931, 0.48275862, 1.24137931, 1.00000000, 1.89655172],
      [0.03666667, 0.00888889, 0.01555556, 0.04      , 0.03222222, 0.06111111])

Upvotes: 1

Views: 399

Answers (1)

warped
warped

Reputation: 9481

You can use np.concatenate to concatenate along some axis if that dimension exists in the arrays that you want to concatenate:

x = np.array([1,2,3])
y = np.array([4,5,6])

here, x and y have shape (3,) so only one axis. This means you can only concatenate along that axis (i.e. axis=0):

z = np.concatenate((x,y))
z.shape
out : (6,)

concatenating along axis=1 will throw an error:

z = np.concatenate((x,y), axis=1)
AxisError: axis 1 is out of bounds for array of dimension 1

You can make np.concatenate work, if you reshape x and y:

x, y = x.reshape(-1,1), y.reshape(-1,1)

Now both have shape (3,1) and can be concatenated along axis 1:

z = np.concatenate((x.reshape(-1,1),y.reshape(-1,1)),axis=1)
z.shape
(6,2)

alternatively, you can reshape to (1,3) and concatenate along axis 0:

z = np.concatenate((x.reshape(1,-1),y.reshape(1,-1)),axis=0)
z.shape
(2,6)

or you use np.vstack, which does not require the reshaping.

Upvotes: 2

Related Questions