Comment accéder à la ième colonne D'un tableau multidimensionnel NumPy?

Supposons que j'ai:

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

test[i] obtient moi ith ligne du tableau (par exemple [1, 2]). Comment puis-je accéder à la vec colonne? (par exemple [1, 3, 5]). Aussi, serait-ce une opération coûteuse?

319
demandé sur nbro 2010-12-16 00:27:41

6 réponses

>>> 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, au moins dans mon expérience. C'est certainement beaucoup plus rapide que d'accéder à chaque élément dans une boucle.

479
répondu mtrw 2016-01-20 09:06:10

Et si vous voulez accéder à plus d'une colonne à 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]])
50
répondu Akavall 2013-04-20 14:05:21
>>> test[:,0]
array([1, 3, 5])

Cette commande vous donne un vecteur ligne, si vous voulez juste faire une boucle sur elle, c'est bien, mais si vous voulez hstack avec un autre tableau, avec la dimension 3xN, vous aurez

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

Alors que

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

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

Par exemple

>>> np.hstack((test, test[:,[0]]))
array([[1, 2, 1],
       [3, 4, 3],
       [5, 6, 5]])
37
répondu Cloud 2014-04-11 15:05:18

Vous pouvez également transposer et renvoyer une ligne:

In [4]: test.T[0]
Out[4]: array([1, 3, 5])
14
répondu Hotschke 2016-01-26 09:55:40
>>> test
array([[0, 1, 2, 3, 4],
       [5, 6, 7, 8, 9]])

>>> ncol = test.shape[1]
>>> ncol
5L

Ensuite, vous pouvez sélectionner la 2ème-4ème colonne de cette façon:

>>> test[0:, 1:(ncol - 1)]
array([[1, 2, 3],
       [6, 7, 8]])
1
répondu mac 2015-11-21 06:59:24

Pour obtenir plusieurs colonnes indépendantes, il suffit de:

> test[:,[0,2]]

Vous obtiendrez des colonnes 0 et 2

0
répondu Brais Perez 2018-03-07 10:43:58