683 votes

numpy: accéder à un tableau par colonne

suppose que j'ai:

 test = numpy.array([[1, 2], [3, 4], [5, 6]])
 

test[i] me permet d'obtenir la ligne du tableau (p. ex. [1, 2] ). Comment puis-je accéder à cette colonne? (eg [1, 3, 5] ). serait-ce aussi une opération coûteuse?

1003voto

mtrw Points 10098
 >>> test[:,0]
array([1, 3, 5])
 

De même,

 >>> test[1,:]
array([3, 4])
 

vous permet d'accéder aux lignes. Ceci est couvert dans la Section 1.4 (Indexation) de la référence NumPy. C'est rapide, du moins dans mon expérience. C'est certainement beaucoup plus rapide que d'accéder à chaque élément d'une boucle.

105voto

Cloud Points 34
 >>> test[:,0]
array([1, 3, 5])
 

cette commande vous donne un vecteur de ligne, si vous voulez juste la passer en boucle, c'est bien, mais si vous voulez utiliser une autre matrice de dimension 3xN, vous aurez

ValueError: tous les tableaux en entrée doivent avoir le même nombre de dimensions

tandis que

 >>> test[:,[0]]
array([[1],
       [3],
       [5]])
 

vous donne un vecteur de colonne, de sorte que vous pouvez faire concaténer ou hstack opération.

par exemple

 >>> np.hstack((test, test[:,[0]]))
array([[1, 2, 1],
       [3, 4, 3],
       [5, 6, 5]])
 

93voto

Akavall Points 7357

Et si vous voulez accéder à plusieurs colonnes à la fois, vous pouvez faire:

 >>> test = np.arange(9).reshape((3,3))
>>> test
array([[0, 1, 2],
       [3, 4, 5],
       [6, 7, 8]])
>>> test[:,[0,2]]
array([[0, 2],
       [3, 5],
       [6, 8]])
 

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