Concatenation of 2 1D `numpy` Arrays Along 2nd Axis Concatenation of 2 1D `numpy` Arrays Along 2nd Axis numpy numpy

Concatenation of 2 1D `numpy` Arrays Along 2nd Axis


Your title explains it - a 1d array does not have a 2nd axis!

But having said that, on my system as on @Oliver W.s, it does not produce an error

In [655]: np.concatenate((t1,t2),axis=1)Out[655]: array([ 1,  2,  3,  4,  5,  6,  7,  8,  9, 11, 12, 13, 14, 15, 16, 17, 18,       19])

This is the result I would have expected from axis=0:

In [656]: np.concatenate((t1,t2),axis=0)Out[656]: array([ 1,  2,  3,  4,  5,  6,  7,  8,  9, 11, 12, 13, 14, 15, 16, 17, 18,       19])

It looks like concatenate ignores the axis parameter when the arrays are 1d. I don't know if this is something new in my 1.9 version, or something old.

For more control consider using the vstack and hstack wrappers that expand array dimensions if needed:

In [657]: np.hstack((t1,t2))Out[657]: array([ 1,  2,  3,  4,  5,  6,  7,  8,  9, 11, 12, 13, 14, 15, 16, 17, 18,       19])In [658]: np.vstack((t1,t2))Out[658]: array([[ 1,  2,  3,  4,  5,  6,  7,  8,  9],       [11, 12, 13, 14, 15, 16, 17, 18, 19]])


This is because of Numpy's way of representing 1D arrays. The following using reshape() will work:

t3 = np.concatenate((t1.reshape(-1,1),t2.reshape(-1,1),axis=1)

Explanation:This is the shape of the 1D array when initially created:

t1 = np.arange(1,10)t1.shape>>(9,)

'np.concatenate' and many other functions don't like the missing dimension. Reshape does the following:

t1.reshape(-1,1).shape>>(9,1) 


If you need an array with two columns you can use column_stack:

import numpy as npt1 = np.arange(1,10)t2 = np.arange(11,20)np.column_stack((t1,t2))

Which results

[[ 1 11] [ 2 12] [ 3 13] [ 4 14] [ 5 15] [ 6 16] [ 7 17] [ 8 18] [ 9 19]]