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]])