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?
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.
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]])
>>> 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]])
Vous pouvez également transposer et renvoyer une ligne:
In [4]: test.T[0]
Out[4]: array([1, 3, 5])
>>> 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]])
Pour obtenir plusieurs colonnes indépendantes, il suffit de:
> test[:,[0,2]]
Vous obtiendrez des colonnes 0 et 2