Numpy transpose of 1D array not giving expected result Numpy transpose of 1D array not giving expected result python python

Numpy transpose of 1D array not giving expected result


NumPy's transpose() effectively reverses the shape of an array. If the array is one-dimensional, this means it has no effect.

In NumPy, the arrays

array([1, 2, 3])

and

array([1,       2,       3])

are actually the same – they only differ in whitespace. What you probably want are the corresponding two-dimensional arrays, for which transpose() would work fine. Also consider using NumPy's matrix type:

In [1]: numpy.matrix([1, 2, 3])Out[1]: matrix([[1, 2, 3]])In [2]: numpy.matrix([1, 2, 3]).TOut[2]: matrix([[1],        [2],        [3]])

Note that for most applications, the plain one-dimensional array would work fine as both a row or column vector, but when coming from Matlab, you might prefer using numpy.matrix.


Transpose is a noop for one-dimensional arrays.

Add new axis and transpose:

>>> a[None].Tarray([[1],       [2],       [3]])>>> np.newaxis is NoneTrue

Or reshape:

>>> a.reshape(a.shape+(1,))array([[1],       [2],       [3]])

Or as @Sven Marnach suggested in comments, add new axis at the end:

>>> a[:,None]array([[1],       [2],       [3]])


A more concise way to reshape a 1D array into a 2D array is:

a = np.array([1,2,3]),  a_2d = a.reshape((1,-1)) or a_2d = a.reshape((-1,1))

The -1 in the shape vector means "fill in whatever number makes this work"