Heim >Backend-Entwicklung >Python-Tutorial >Wie kann ich NumPy-Array-Elemente basierend auf einer bestimmten Spalte gruppieren?

Wie kann ich NumPy-Array-Elemente basierend auf einer bestimmten Spalte gruppieren?

DDD
DDDOriginal
2024-12-03 11:37:14239Durchsuche

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

Gruppieren nach Funktion in NumPy

NumPy bietet mehrere Funktionen zur Array-Manipulation, einschließlich Operationen zum Gruppieren von Elementen. Eine solche Operation ist Groupby, mit der Sie Elemente in einem Array basierend auf einem angegebenen Schlüssel gruppieren können.

Spezifisches Problem

Betrachten Sie das folgende Array 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]])

Angenommen, Sie möchten die Elemente basierend auf der ersten Spalte gruppieren. In diesem Fall würden Sie erwarten, dass die Ausgabe wie folgt aussieht:

array([[[275, 441, 494, 593]],
       [[679, 533, 686]],
       [[559, 219, 455]],
       [[605, 468, 692, 613]]], dtype=object)

Lösung

Obwohl es in NumPy keine direkte Groupby-Funktion gibt, ist es möglich, dies zu erreichen unter Verwendung des folgenden Ansatzes:

# 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])

Diese Lösung gruppiert die Elemente im a-Array effizient basierend auf der ersten Spalte, auch wenn a nicht explizit verwendet wird Groupby-Funktion.

Das obige ist der detaillierte Inhalt vonWie kann ich NumPy-Array-Elemente basierend auf einer bestimmten Spalte gruppieren?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn