Ich bin überrascht, dass diese spezielle Frage noch nicht gestellt wurde, aber ich habe sie weder in SO noch in der Dokumentation von gefunden np.sort
.
Angenommen, ich habe ein zufälliges Numpy-Array mit ganzen Zahlen, z.
> temp = np.random.randint(1,10, 10)
> temp
array([2, 4, 7, 4, 2, 2, 7, 6, 4, 4])
Wenn ich es sortiere, erhalte ich standardmäßig aufsteigende Reihenfolge:
> np.sort(temp)
array([2, 2, 2, 4, 4, 4, 4, 6, 7, 7])
Ich möchte jedoch, dass die Lösung in absteigender Reihenfolge sortiert wird.
Jetzt weiß ich, dass ich immer tun kann:
reverse_order = np.sort(temp)[::-1]
Aber ist diese letzte Aussage effizient ? Erstellt es keine Kopie in aufsteigender Reihenfolge und kehrt diese Kopie dann um, um das Ergebnis in umgekehrter Reihenfolge zu erhalten? Wenn dies tatsächlich der Fall ist, gibt es eine effiziente Alternative? Es sieht nicht so aus, als würde es np.sort
Parameter akzeptieren, um das Vorzeichen der Vergleiche in der Sortieroperation zu ändern und die Dinge in umgekehrter Reihenfolge zu erhalten.
temp[::-1].sort()
, dass es in umgekehrter Reihenfolge sortieren muss? Ich lese es so: Kehre das ursprüngliche Array um und sortiere es dann (in aufsteigender Reihenfolge). Warum würde das Umkehren des ursprünglichen Arrays (in zufälliger Reihenfolge) und das anschließende Sortieren in aufsteigender Reihenfolge das Array in umgekehrter Reihenfolge zurückgeben?