Accès rapide :
Introduction
Trier un vecteur
Trier selon un axe
Récupérer les indices de tri
Rechercher des positions
Extraire les valeurs uniques
Limiter les valeurs
Combiner recherche et masque booléen
Dès que l'on manipule des données, on a souvent besoin de les trier, de retrouver certaines positions, ou de compter les valeurs distinctes. NumPy propose des fonctions efficaces pour ces opérations.
La fonction np.sort retourne une version triée du tableau sans modifier le tableau d'origine.
1 2 3 4 5 6 7 |
import numpy as np values = np.array([40, 10, 30, 20]) sorted_values = np.sort(values) print(values) print(sorted_values) |
[40 10 30 20] [10 20 30 40]
Sur une matrice, le tri peut être réalisé ligne par ligne ou colonne par colonne selon l'axe choisi.
1 2 3 4 5 6 |
import numpy as np m = np.array([[3, 1, 2], [9, 7, 8]]) print(np.sort(m, axis=1)) print(np.sort(m, axis=0)) |
[[1 2 3] [7 8 9]] [[3 1 2] [9 7 8]]
La fonction argsort retourne les indices qui permettraient de trier un tableau. C'est utile
lorsque plusieurs tableaux décrivent les mêmes observations.
1 2 3 4 5 6 7 8 |
import numpy as np names = np.array(["Bob", "Alice", "Diane"]) scores = np.array([12, 18, 15]) order = np.argsort(scores) print(scores[order]) print(names[order]) |
[12 15 18] ['Bob' 'Diane' 'Alice']
Les noms ont été réordonnés avec les mêmes indices que les scores.
La fonction where permet de récupèrer les positions qui respectent une condition.
1 2 3 4 5 6 7 |
import numpy as np values = np.array([5, 12, 8, 20, 3]) positions = np.where(values >= 10)[0] print(positions) print(values[positions]) |
[1 3] [12 20]
La fonction unique retourne les valeurs distinctes d'un tableau. Elle peut aussi compter
le nombre d'occurrences de chaque valeur.
1 2 3 4 5 6 7 |
import numpy as np colors = np.array(["red", "blue", "red", "green", "blue", "red"]) values, counts = np.unique(colors, return_counts=True) print(values) print(counts) |
['blue' 'green' 'red'] [2 1 3]
Les valeurs uniques sont retournées dans l'ordre trié, avec le nombre d'apparitions correspondant.
La fonction clip force les valeurs à rester dans un intervalle donné. Les valeurs trop
petites sont remontées, les valeurs trop grandes sont abaissées.
1 2 3 4 5 |
import numpy as np values = np.array([-5, 3, 12, 27]) print(np.clip(values, 0, 20)) |
[ 0 3 12 20]
Les masques booléens sont souvent la manière la plus lisible de sélectionner des valeurs.
1 2 3 4 5 6 7 |
import numpy as np scores = np.array([8, 12, 15, 6, 18]) mask = scores >= 10 print(np.where(mask)[0]) print(scores[mask]) |
[1 2 4] [12 15 18]
Améliorations / Corrections
Vous avez des améliorations (ou des corrections) à proposer pour ce document : je vous remerçie par avance de m'en faire part, cela m'aide à améliorer le site.
Emplacement :
Description des améliorations :