Aktualisieren eines NumPy-Arrays mit einem anderen

8

Scheinbar einfache Frage: Ich habe ein Array mit zwei Spalten, die erste repräsentiert eine ID und die zweite eine Anzahl. Ich möchte es mit einem anderen, ähnlichen Array aktualisieren, so dass

%Vor%

Gibt es eine Möglichkeit, dies mit Indexierung / Slicing zu tun, so dass ich nicht einfach über jede Zeile iterieren muss?

    
triphook 04.06.2015, 20:01
quelle

2 Antworten

4

Generischer Fall

Vorgehensweise # 1: Sie können % verwenden. co_de% , um eine solche np.add.at Operation wie folgt durchzuführen -

%Vor%

Um ID-based und a_idx als wahrscheinlich schnellere Alternative zu finden, b_idx könnte so verwendet werden -

%Vor%

Beispiel Eingabe-Ausgabe:

%Vor%

Vorgehensweise # 2: Sie können np.searchsorted verwenden. um die gleiche ID basierend auf dem Hinzufügen zu machen -

%Vor%

Sonderfall

Wenn die ID-Spalten in np.bincount und a sortiert sind, wird es einfacher, da wir einfach Masken mit b verwenden können, um in das mit np.in1d like so -

%Vor%

Beispiellauf -

%Vor%     
Divakar 04.06.2015, 20:55
quelle
3
%Vor%

Hinweis Wenn Sie möchten, dass das Ergebnis sortiert wird, können Sie np.lexsort :

verwenden %Vor%

Erläuterung:

Zuerst finden Sie die eindeutigen IDs mit folgendem Befehl:

%Vor%

Finde dann die Unterschiede zwischen den IDs, wenn a und alle IDs:

%Vor%

Finde dann die Objekte in b mit den IDs in diff :

%Vor%

Und schließlich verkette das Ergebnis mit der Liste a :

%Vor%

Betrachten Sie ein anderes Beispiel mit der Sortierung:

%Vor%     
Kasramvd 04.06.2015 21:05
quelle

Tags und Links