Maison >développement back-end >Tutoriel Python >Comment puis-je regrouper les éléments du tableau NumPy en fonction d'une colonne spécifique ?

Comment puis-je regrouper les éléments du tableau NumPy en fonction d'une colonne spécifique ?

DDD
DDDoriginal
2024-12-03 11:37:14239parcourir

How Can I Group NumPy Array Elements Based on a Specific Column?

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!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn