Maison >développement back-end >Tutoriel Python >Comment puis-je regrouper les éléments du tableau NumPy en fonction d'une colonne spécifique ?
Grouper par fonction dans NumPy
NumPy fournit plusieurs fonctions pour la manipulation de tableaux, y compris des opérations de regroupement d'éléments. L'une de ces opérations est groupby, qui vous permet de regrouper des éléments dans un tableau en fonction d'une clé spécifiée.
Problème spécifique
Considérez le tableau suivant a :
a = array([[ 1, 275], [ 1, 441], [ 1, 494], [ 1, 593], [ 2, 679], [ 2, 533], [ 2, 686], [ 3, 559], [ 3, 219], [ 3, 455], [ 4, 605], [ 4, 468], [ 4, 692], [ 4, 613]])
Supposons que vous souhaitiez regrouper les éléments en fonction de la première colonne. Dans ce cas, vous vous attendez à ce que le résultat soit :
array([[[275, 441, 494, 593]], [[679, 533, 686]], [[559, 219, 455]], [[605, 468, 692, 613]]], dtype=object)
Solution
Bien qu'il n'y ait pas de fonction groupby directe dans NumPy, il est possible d'y parvenir en utilisant l'approche suivante :
# Sort the array by the first column a = a[a[:, 0].argsort()] # Find the unique values in the first column as keys keys = np.unique(a[:, 0]) # Create an array to hold the grouped elements grouped = [] # Iterate through the keys for key in keys: # Create a mask to select elements with the given key mask = (a[:, 0] == key) # Append the selected elements to the grouped array grouped.append(a[mask][:, 1])
Cette solution regroupe efficacement les éléments du tableau a en fonction de la première colonne, même si elle n'utilise pas explicitement un fonction groupby.
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!