Sortierung in Sparse Matrix

8

Ich habe eine dünne Matrix. Ich muss diese Matrix Zeile für Zeile sortieren und eine andere [spärliche] Matrix erstellen. Code kann es besser erklären:

%Vor%

Ausgabe1

%Vor%

Ich habe diese m Matrix. Ich möchte eine neue Matrix mit sortierter Version von m erstellen. Die neue Matrix enthält 0. Zeile wie folgt.

%Vor%

Ausgabe2

%Vor%

So kann ich herausfinden, welche Spalte größer ist usw.:

%Vor%

Ausgabe3

%Vor%

Natürlich sollte jede Zeile wie oben unabhängig sortiert werden.

Ich habe eine Lösung für dieses Problem, aber es ist nicht elegant.

    
Thorn 04.04.2012, 08:26
quelle

2 Antworten

6

Wenn Sie die nullwertigen Elemente der Matrix ignorieren möchten, sollte der folgende Code funktionieren. Es ist auch viel schneller als Implementierungen, die die getrow-Methode verwenden, die ziemlich langsam ist.

%Vor%

Zum Beispiel:

%Vor%

Abhängig von Ihren Bedürfnissen möchten Sie vielleicht die Sortierschlüssel im Lambda verändern oder die Ausgabe weiterverarbeiten. Wenn Sie alles in einer Reihe indizierten Wörterbuch möchten, könnten Sie tun:

%Vor%     
Alexander Measure 02.02.2013 22:37
quelle
1

Meine schlechte Lösung ist so:

%Vor%

Es kann einige einfache Fehler oben geben, weil ich es noch nicht überprüft habe. Aber die Idee ist intuitiv, denke ich. Gibt es eine gute Lösung?

Bearbeiten

Diese neue Matrix-Erstellung kann nutzlos sein, denn wenn Sie getrow method aufrufen, wird der Auftrag erneut unterbrochen. Nur coo_matrix.col behält die Reihenfolge bei.

Eine andere Lösung

Dies ist keine exakte Lösung, aber es kann hilfreich sein:

%Vor% %Vor%     
Thorn 04.04.2012 09:19
quelle