una transponer ndarray matriz inversa con como python numpy scipy

python - transponer - Numpy transpose no da resultado esperado



transpose a vector in python (4)

Estoy intentando un ejemplo muy básico en el módulo scipy de Python para el método de transposición, pero no está dando el resultado esperado. Estoy usando Ipython con el modo pylab.

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

Si imprimo el contenido de las matrices "a" y "b", son similares.

La expectativa es: (que se traducirá en Matlab om transpose)

[1, 2, 3]


Debe probar: a = array([[1,2,3]]) o a = array([[1],[2],[3]]) , es decir, a debe ser una matriz (vector de fila, columna vectorial).


La transpose() NumPy invierte efectivamente la forma de una matriz. Si la matriz es unidimensional, esto significa que no tiene ningún efecto.

En NumPy, las matrices

array([1, 2, 3])

y

array([1, 2, 3])

son en realidad iguales, solo difieren en espacios en blanco. Lo que probablemente desee son las matrices bidimensionales correspondientes, para las cuales transpose() funcionaría bien. También considere usar el tipo de matrix de NumPy:

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

Tenga en cuenta que para la mayoría de las aplicaciones, la matriz unidimensional simple funcionaría bien como un vector de fila o columna, pero si viene de Matlab, es posible que prefiera usar numpy.matrix .


Transpose es un noop para arreglos unidimensionales.

Añadir nuevos ejes y transponer:

>>> a[None].T array([[1], [2], [3]]) >>> np.newaxis is None True

O remodelar

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

O como @Sven Marnach sugirió en los comentarios, agregue un nuevo eje al final:

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


Una forma más concisa de remodelar una matriz 1D en una matriz 2D es:

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

El -1 en el vector de forma significa "completar cualquier número que haga que esto funcione"