Comment classer les éléments dans le tableau NumPy (avec exemples)



Vous pouvez utiliser l’une des méthodes suivantes pour calculer le classement des éléments dans un tableau NumPy :

Méthode 1 : utilisez argsort() depuis NumPy

import numpy as np

ranks = np.array(my_array).argsort().argsort()

Méthode 2 : utilisez Rankdata() de SciPy

from scipy.stats import rankdata

ranks = rankdata(my_array)

Les exemples suivants montrent comment utiliser chaque méthode en pratique avec le tableau NumPy suivant :

import numpy as np

#define array of values
my_array = np.array([3, 5, 2, 1, 9, 9])

#view array
print(my_array)

[3 5 2 1 9 9]

Exemple 1 : classer les éléments dans le tableau NumPy à l’aide de argsort()

Le code suivant montre comment utiliser la fonction argsort() de NumPy pour classer les éléments du tableau :

#calculate rank of each item in array
ranks = np.array(my_array).argsort().argsort()

#view ranks
print(ranks)

[2 3 1 0 4 5]

Les résultats montrent le rang de chaque élément dans le tableau d’origine, 0 représentant la plus petite valeur.

L’avantage de cette approche est que vous n’avez pas besoin de charger de modules supplémentaires, mais l’inconvénient est que argsort() n’a qu’une seule méthode pour gérer les liens.

Par défaut, argsort() utilise une méthode ordinale pour gérer les liens, ce qui signifie que la valeur liée qui apparaît en premier reçoit automatiquement le rang inférieur.

Exemple 2 : classer les éléments dans le tableau NumPy à l’aide de Rankdata()

Le code suivant montre comment utiliser la fonction Rankdata() de SciPy pour classer les éléments du tableau :

from scipy.stats import rankdata 

#calculate rank of each item in array
ranks = rankdata(my_array)

#view ranks
print(ranks)

array([3. , 4. , 2. , 1. , 5.5, 5.5])

Les résultats montrent le rang de chaque élément dans le tableau d’origine, 1 représentant la plus petite valeur.

Si vous souhaitez que 0 représente la plus petite valeur, soustrayez simplement 1 à chaque valeur :

from scipy.stats import rankdata 

#calculate rank of each item in array
ranks = rankdata(my_array) - 1

#view ranks
print(ranks)

[2.  3.  1.  0.  4.5 4.5]

Par défaut, la fonction Rankdata() attribue des classements moyens à toutes les valeurs ayant des égalités.

Cependant, vous pouvez utiliser l’argument méthode pour gérer les liens d’une manière différente.

Par exemple, le code suivant montre comment utiliser ordinal comme méthode de gestion des liens :

from scipy.stats import rankdata 

#calculate rank of each item in array
ranks = rankdata(my_array, method='ordinal') - 1

#view ranks
print(ranks)

[2 3 1 0 4 5]

Cela produit les mêmes résultats que la méthode argsort() de NumPy.

D’autres méthodes de gestion des liens incluent min , max et dense .

Découvrez chaque méthode dans la documentation SciPy .

Ressources additionnelles

Les didacticiels suivants expliquent comment effectuer d’autres tâches courantes dans NumPy :

Comment supprimer les éléments en double du tableau NumPy
Comment convertir un tableau NumPy de flotteurs en nombres entiers
Comment convertir une matrice NumPy en tableau

Ajouter un commentaire

Votre adresse e-mail ne sera pas publiée. Les champs obligatoires sont indiqués avec *