Participer au site avec un Tip
Rechercher
 

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 :

Vous êtes un professionnel et vous avez besoin d'une formation ? Deep Learning avec Python
et Keras et Tensorflow
Voir le programme détaillé

Tri, recherche et valeurs uniques avec NumPy

Agrégations et statistiques Valeurs manquantes et spéciales


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

Introduction

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.

Trier un vecteur

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)
Tri d'un vecteur

[40 10 30 20]
[10 20 30 40]

Trier selon un axe

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))
Tri ligne par ligne et colonne par colonne

[[1 2 3]
 [7 8 9]]
[[3 1 2]
 [9 7 8]]

Récupérer les indices de tri

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])
Tri indirect avec argsort

[12 15 18]
['Bob' 'Diane' 'Alice']

Les noms ont été réordonnés avec les mêmes indices que les scores.

Rechercher des positions

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])
Recherche de positions avec where

[1 3]
[12 20]

Extraire les valeurs uniques

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)
Valeurs uniques et comptage

['blue' 'green' 'red']
[2 1 3]

Les valeurs uniques sont retournées dans l'ordre trié, avec le nombre d'apparitions correspondant.

Limiter les valeurs

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))
Utilisation de clip

[ 0  3 12 20]

Combiner recherche et masque booléen

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])
Sélection avec un masque

[1 2 4]
[12 15 18]

Agrégations et statistiques Valeurs manquantes et spéciales




Vous êtes un professionnel et vous avez besoin d'une formation ? Machine Learning
avec Scikit-Learn
Voir le programme détaillé