Comment regrouper des variables en Python à l’aide de numpy.digitize()
Souvent, vous pourriez être intéressé à placer les valeurs d’une variable dans des « bacs » en Python.
Heureusement, cela est facile à faire en utilisant la fonction numpy.digitize() , qui utilise la syntaxe suivante :
numpy.digitize(x, bacs, droite=False)
où:
- x : tableau à regrouper.
- bins : tableau de bacs.
- right : Indique si les intervalles incluent le bord droit ou gauche du bac. Par défaut, l’intervalle n’inclut pas le bord droit.
Ce tutoriel montre plusieurs exemples d’utilisation pratique de cette fonction.
Exemple 1 : placer toutes les valeurs dans deux bacs
Le code suivant montre comment placer les valeurs d’un tableau dans deux bacs :
- 0 si x < 20
- 1 si x ≥ 20
import numpy as np #create data data = [2, 4, 4, 7, 12, 14, 19, 20, 24, 31, 34] #place values into bins np.digitize(data, bins=[20]) array([0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1])
Exemple 2 : placer toutes les valeurs dans trois bacs
Le code suivant montre comment placer les valeurs d’un tableau dans trois bacs :
- 0 si x < 10
- 1 si 10 ≤ x < 20
- 2 si x ≥ 20
import numpy as np #create data data = [2, 4, 4, 7, 12, 14, 20, 22, 24, 31, 34] #place values into bins np.digitize(data, bins=[10, 20]) array([0, 0, 0, 0, 1, 1, 2, 2, 2, 2, 2])
Notez que si nous spécifions right= True alors les valeurs seraient placées dans les bacs suivants :
- 0 si x ≤ 10
- 1 si 10 < x ≤ 20
- 2 si x > 20
Chaque intervalle inclurait le bord droit du bac. Voici à quoi cela ressemble :
import numpy as np #create data data = [2, 4, 4, 7, 12, 14, 20, 22, 24, 31, 34] #place values into bins np.digitize(data, bins=[10, 20], right=True) array([0, 0, 0, 0, 1, 1, 1, 2, 2, 2, 2])
Exemple 3 : placer toutes les valeurs dans quatre bacs
Le code suivant montre comment placer les valeurs d’un tableau dans trois bacs :
- 0 si x < 10
- 1 si 10 ≤ x < 20
- 2 si 20 ≤ x < 30
- 3 si x ≥ 30
import numpy as np #create data data = [2, 4, 4, 7, 12, 14, 20, 22, 24, 31, 34] #place values into bins np.digitize(data, bins=[10, 20, 30]) array([0, 0, 0, 0, 1, 1, 2, 2, 2, 3, 3])
Exemple 4 : compter la fréquence de chaque bac
Une autre fonction NumPy utile qui complète la fonction numpy.digitize() est la fonction numpy.bincount() , qui compte les fréquences de chaque bac.
Le code suivant montre comment placer les valeurs d’un tableau dans trois groupes, puis compter la fréquence de chaque groupe :
import numpy as np #create data data = [2, 4, 4, 7, 12, 14, 20, 22, 24, 31, 34] #place values into bins bin_data = np.digitize(data, bins=[10, 20]) #view binned data bin_data array([0, 0, 0, 0, 1, 1, 2, 2, 2, 2, 2]) #count frequency of each bin np.bincount(bin_data) array([4, 2, 5])
La sortie nous dit que :
- Le bac « 0 » contient 4 valeurs de données.
- Le bac « 1 » contient 2 valeurs de données.
- Le bac « 2 » contient 5 valeurs de données.
Trouvez plus de didacticiels Python ici .