413 votes

tri de tableaux dans numpy par colonne

Comment puis-je trier un tableau numpy par la nième colonne ? par exemple

Je tiens à trier de la deuxième colonne, telle que je serai de retour :

Merci.

871voto

Steve Tjoa Points 15116

Je suppose que cela fonctionne :``

171voto

Joe Kington Points 68089

@steve est en fait la façon la plus élégante de le faire.

Pour la "bonne" façon de voir l'ordre argument mot-clé de numpy.ndarray.tri

Cependant, vous devez accéder à votre tableau comme un tableau avec des champs (un tableau structuré).

La "bonne" façon est assez laid si vous n'avez pas d'abord définir votre tableau avec des champs...

Comme un exemple rapide, de les trier et de renvoyer une copie:

In [1]: import numpy as np

In [2]: a = np.array([[1,2,3],[4,5,6],[0,0,1]])

In [3]: np.sort(a.view('i8,i8,i8'), order=['f1'], axis=0).view(np.int)
Out[3]: 
array([[0, 0, 1],
       [1, 2, 3],
       [4, 5, 6]])

Faire le tri sur place:

In [6]: a.view('i8,i8,i8').sort(order=['f1'], axis=0) #<-- returns None

In [7]: a
Out[7]: 
array([[0, 0, 1],
       [1, 2, 3],
       [4, 5, 6]])

@Steve est vraiment la façon la plus élégante de le faire, autant que je sache...

Le seul avantage de cette méthode est que la "commande" de l'argument est une liste de champs à l'ordre de la recherche. Par exemple, vous pouvez trier les résultats par la deuxième colonne, puis la troisième colonne, puis la première colonne par la fourniture d'une commande=['f1','f2','f0'].

23voto

user541064 Points 116

Partir du python docs wiki lien, je pense que vous pouvez faire :

La sortie est :

3voto

zhangxaochen Points 7821

utiliser `` :

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