Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

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] 
like image 803
sarbjit Avatar asked Aug 09 '12 14:08

sarbjit


People also ask

How do you transpose 1 dimensional array NumPy?

To transpose an array or matrix in NumPy, we have to use the T attribute that stores the transposed array or matrix. T attribute is exclusive to NumPy arrays, that is, ndarray only.

How do you transpose a one direction matrix?

Matlab's "1D" arrays are 2D.) If you want to turn your 1D vector into a 2D array and then transpose it, just slice it with np. newaxis (or None , they're the same, newaxis is just more readable). Generally speaking though, you don't ever need to worry about this.

How do you transpose a NumPy array?

Use transpose(a, argsort(axes)) to invert the transposition of tensors when using the axes keyword argument. Transposing a 1-D array returns an unchanged view of the original array.

What is difference between .T and transpose () in NumPy?

I guess what is meant is that . T and the transpose() call both return the transpose of the array. In fact, . T return the transpose of the array, while transpose is a more general method_ that can be given axes ( transpose(*axes) , with defaults that make the call transpose() equivalent to .


1 Answers

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.

like image 192
Sven Marnach Avatar answered Sep 17 '22 09:09

Sven Marnach