Je souhaite obtenir le classement des valeurs de la liste Python par ordre croissant / décroissant. J'ai trouvé l'ordre croissant dès que je l'ai recherché, mais je l'ai laissé sous forme de note car l'ordre décroissant nécessitait une certaine ingéniosité.
C'est un code immédiatement.
from scipy.stats import rankdata
# Données cibles
array = [10,30,30,40,20]
# Obtenez le classement de chaque index avec les données de classement
asc = rankdata(array)
# Afficher par ordre croissant
print(type(asc))
print(asc.astype(float))
# Calcul décroissant
desc = (len(asc) - asc + 1).astype(float)
# Afficher par ordre décroissant
print(type(desc))
print(desc)
Il semble que le processus d'acquisition par ordre décroissant ne soit pas implémenté dans les données de classement, il était donc nécessaire de calculer l'ordre décroissant. Après avoir essayé diverses choses, je pense que cela semble être le plus simple.
Voici les résultats de l'exécution.
<class 'numpy.ndarray'>
[1. 3. 5. 4. 2.]
<class 'numpy.ndarray'>
[5. 3. 1. 2. 4.]
Si vous remplacez un type par un type (int)
<class 'numpy.ndarray'>
[1 3 5 4 2]
<class 'numpy.ndarray'>
[5 3 1 2 4]
Ce sera comme ça.
Si la même valeur est entrée dans cet état ...
# Données cibles
array = [10,30,30,40,20]
<class 'numpy.ndarray'>
[1 3 3 5 2]
<class 'numpy.ndarray'>
[5 2 2 1 4]
Ce sera comme ça. Le résultat a changé. S'il reste flottant
<class 'numpy.ndarray'>
[1. 3.5 3.5 5. 2. ]
<class 'numpy.ndarray'>
[5. 2.5 2.5 1. 4. ]
Ce sera comme ça.
Lorsque les données ne sont pas couvertes, il s'agit d'une méthode limitée.
La méthode indiquée par konandoirusa est extrêmement simple, je l'ai donc ajoutée.
import numpy as np
from scipy.stats import rankdata
# Données cibles
array = [10,30,30,40,20]
# ordre croissant
print(rankdata(np.array(array)))
# Ordre décroissant
print(rankdata(-np.array(array)))
Résultat d'exécution
[1. 3.5 3.5 5. 2. ]
[5. 2.5 2.5 1. 4. ]
Recommended Posts