Trier un tableau selon deux colonnes

Résolu
commentcamarcheeay Messages postés 735 Statut Membre -  
commentcamarcheeay Messages postés 735 Statut Membre -
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,

--
C. Taha

2 réponses

  1. Utilisateur anonyme
     
    Difficile de tout comprendre, mais la documentation indique comment trier selon deux colonnes.
    1
    1. commentcamarcheeay Messages postés 735 Statut Membre 86
       
      Ce que vous proposez répond bien à la question, merci :)
      0
  2. commentcamarcheeay Messages postés 735 Statut Membre 86
     
    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.
    0