Trier un tableau selon deux colonnes [Résolu/Fermé]

Signaler
Messages postés
666
Date d'inscription
mercredi 24 février 2010
Statut
Membre
Dernière intervention
30 mars 2020
-
Messages postés
666
Date d'inscription
mercredi 24 février 2010
Statut
Membre
Dernière intervention
30 mars 2020
-
Bonjour,

J'ai un tableau numérique
numpy
que je veux trier selon deux colonne.
Le tri doit être fait par rapport à une première colonne, puis par rapport à une deuxième.
La méthode
sort
de numpy permet de faire des opérations de tri, mais pas selon deux colonnes, à moins d'utiliser l'argument
order
, ce qui impose d'avoir des tableaux structurés.

Je me demande s'il y a moyen de le faire (bien évidement, sans passer par les boucles, sinon, on perd de performance).

Je vous remercie d'avance,

2 réponses


Difficile de tout comprendre, mais la documentation indique comment trier selon deux colonnes.
1
Merci

Quelques mots de remerciements seront grandement appréciés. Ajouter un commentaire

CCM 65492 internautes nous ont dit merci ce mois-ci

Messages postés
666
Date d'inscription
mercredi 24 février 2010
Statut
Membre
Dernière intervention
30 mars 2020
80
Ce que vous proposez répond bien à la question, merci :)
Messages postés
666
Date d'inscription
mercredi 24 février 2010
Statut
Membre
Dernière intervention
30 mars 2020
80
Bonjour,

Fred propose d'utiliser
numpy.lexsort
. Ce qui répond bien à la question.

Voici un exemple d'utilisation :
# On crée un tableau (30x2) d'entiers aléatoires compris entre 0 et 99
a = np.random.randint(100, size=(30, 2))
# idx contient les indices du tri du tableau a selon la première
# colonne, puis selon la seconde.
# C'est le même principe de numpy.argsort
idx = np.lexsort((a[:, 1], a[:, 0],))
# a[idx] est le tableau trié
res = a[idx]

J'ai mis cet exemple car celui contenu dans la documentation est très basique fait appliqué à des chaînes de caractères.