Angenommen, Sie haben ein Array von Werten, die zusammen summiert werden müssen
%Vor%und ein zweites Array, das angibt, welche Elemente summiert werden müssen
%Vor% Das Ergebnis wird in einem neuen Array der Größe max(i)+1
gespeichert. So wäre beispielsweise i=[0,0,0,0,0]
äquivalent dazu, alle Elemente von d
zu summieren und das Ergebnis an der Position 0
eines neuen Arrays der Größe 1
zu speichern.
Ich habe versucht, dies mit
zu implementieren %Vor% Allerdings fügt die Operation +=
jedes Element nur einmal hinzu und gibt damit das unerwartete Ergebnis von
statt
%Vor%Wie würde man diese Art von Summierung richtig umsetzen?
Wenn ich die Frage richtig verstehe, gibt es dafür eine schnelle Funktion (solange das Datenfeld 1d ist)
%Vor%np.bincount gibt ein Array für alle Ganzzahlbereiche (max (i)) zurück, auch wenn einige Zählungen Null sind
Im allgemeinen Fall, wenn Sie Submatrizen mit Labels summieren möchten, können Sie den folgenden Code verwenden
%Vor%Die erste Methode verwendet die Sparse-Matrix-Multiplikation. Der zweite ist die Verallgemeinerung der Antwort von user333700. Beide Methoden haben vergleichbare Geschwindigkeit:
%Vor%Ausgabe:
%Vor%