Für jedes Element in einem randomisierten Array von 2D-Indizes (mit möglichen Duplikaten) möchte ich "+ = 1" zum entsprechenden Gitter in einem 2D-Null-Array. Ich weiß jedoch nicht, wie ich die Berechnung optimieren soll. Verwenden Sie den Standard für die Schleife, wie hier gezeigt,
%Vor%Die Laufzeit kann sehr bedeutsam sein:
%Vor%Gibt es eine Möglichkeit, diesen iterativen Prozess zu vektorisieren?
Divakars Antwort hat mich dazu gebracht, folgendes zu versuchen, was die bisher schnellste Methode zu sein scheint:
%Vor%Zeiten:
%Vor% Sie können R,C
-Indizes von idx
in lineare Indizes umwandeln, dann die eindeutigen count mit ihren counts herausfinden und sie schließlich in der Ausgabe grids
als endgültige Ausgabe speichern. Hier ist die Implementierung, um das gleiche zu erreichen -
Laufzeittests -
Hier sind die Laufzeittests, die alle Ansätze abdecken (einschließlich @ DSMs Ansätze ) und die gleichen Definitionen verwenden wie in diese Lösung -
%Vor% Die Laufzeiten deuten darauf hin, dass der vorgeschlagene np.unique
basierte Ansatz mehr als 50% schneller ist als der zweitschnellste Ansatz.
Tags und Links python optimization loops numpy vectorization