Top n Zeilen in einer matrix?

Ich versuche, herauszufinden, der beste Weg, dies zu tun, idealerweise in der Oktave, aber ich nehme NumPy in eine Prise.

Sagen wir, ich habe eine axb-matrix M. Wenn ich will, die Zeilen-Indizes der maximale Wert in einer bestimmten Spalte [x, xi] = max(M) zurückkehren wird, werden diese Indizes für mich als zeilenvektor.

Zum Beispiel, wenn M:

1  3  5 
2  9  1
7  2  4

Oben zurück zeilenvektor [3 2 1] als xi; Ein Vektor, der die Indizes der einzelnen Zeile enthält den maximalen Wert für diese Spalte. Das ist gut so. Ich möchte mit diesem zeilenvektor.

Aber was ist, wenn ich will, dass die top - n solchen zeilenvektoren?

[bearbeitet, um zu erklären, diese besser]

Für das oben genannte Beispiel, ist der erste Vektor wäre die oben [3, 2, 1] (die Indizes der Zeilen mit den höchsten Werten für jede bestimmte Spalte). Der zweite Vektor wäre [2 1 3] (die Indizes der Zeilen mit den zweithöchste Werte für jede Spalte).

Ich könnte es tun, iterativ, aber meine eigentliche Matrizen haben viele Tausende von Zeilen, so wäre dies ziemlich rechenintensiv. Ich kann nicht finden jede offensichtliche matrix-utility-Funktion, um mir zu helfen, das zu erreichen. Irgendwelche Vorschläge?

  • Was meinst du mit "top-n-Z zeilenvektoren"? Was würdest du in deinem Beispiel für n = 2?
  • Für numpy Lösung an: stackoverflow.com/questions/6910641/...
  • Ich habe bearbeitet zu erklären, das besser in der ursprünglichen Frage. Hoffentlich werden es jetzt mehr Sinn macht.
InformationsquelleAutor R Hill | 2013-06-18
Schreibe einen Kommentar