273 votes

Python numpy transpose

J'utilise Python et Numpy et quelques problèmes avec "transposer":

 a=array([ 5,4])                 # a is random !!!
print a
print a.T
 

Pourquoi ça ne marche pas? Si a est par exemple [[],[]] fonctionne alors mais j'ai besoin de transposer [...,...,...] .

Merci

309voto

Joe Kington Points 68089

Il fonctionne exactement comme il est censé le faire. La transposition d'un 1D tableau est encore un 1D tableau! (Si vous avez l'habitude de matlab, qui, fondamentalement, n'ont pas de concept d'un tableau 1D. Matlab "1D" les tableaux sont en 2D.)

Si vous voulez transformer votre 1D vecteur dans un tableau 2D, puis de transposer, il suffit de le couper en tranches avec np.newaxis (ou None, ils sont même, newaxis est juste plus lisible).

import numpy as np
a = np.array([5,4])[np.newaxis]
print a
print a.T

De façon générale toutefois, vous n'avez pas toujours besoin de s'inquiéter à ce sujet. L'ajout de la dimension supplémentaire est généralement pas ce que vous voulez, si vous êtes juste de le faire sortir de l'habitude. Numpy automatiquement de diffusion 1D matrice au moment de faire les différents calculs. Il n'y a habituellement pas besoin de faire la distinction entre un vecteur ligne et un vecteur colonne (ni de qui sont les vecteurs. Ils sont à la fois en 2D!) quand vous voulez juste un vecteur.

176voto

savagent Points 351

Vous pouvez utiliser deux paires de crochets au lieu d'une. Cela crée en fait un tableau 2D, qui peut être transposé, contrairement au tableau 1D que vous créez si vous utilisez une paire de crochets. Environ un an trop tard, mais juste pour l'enregistrement ...

 import numpy as np    
a = np.array([[5, 4]])
a.T
 

18voto

nobar Points 5849

Vous pouvez convertir un vecteur existant en matrice en l’enveloppant dans un jeu supplémentaire de crochets ...

 from numpy import *
v=array([5,4]) ## create a numpy vector
array([v]).T ## transpose a vector into a matrix
 

numpy a aussi une classe matrix (voir tableau vs matrice ) ...

 matrix(v).T ## transpose a vector into a matrix
 

-5voto

manojlds Points 96599

La transposition de [5,4] est [5,4], ainsi en fait

 [5,
 4]
 

PS: Il existe un moyen simple de transposer une matrice 2D -

 zip(*a)
 

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X