pythonnumpyscipytranspose

# Numpy transpose of 1D array not giving expected result

I am trying a very basic example in Python scipy module for `transpose()` method but it's not giving expected result. I am using Ipython with pylab mode.

``````a = array([1,2,3]
print a.shape
>> (3,)

b = a.transpose()
print b.shape
>> (3,)
``````

If I print the contents of arrays "a" and "b", they are similar.

Expectation is: (which will be result in Matlab on transpose)

`````` [1,
2,
3]
``````

Solution

• 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]).T
Out[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`.