Wie ordne ich Elemente in einem Array ohne redundante Sortierung effizient ein?

Mary-Kate Olsen
Freigeben: 2024-10-30 15:11:02
Original
397 Leute haben es durchsucht

How to Efficiently Rank Items in an Array without Redundant Sorting?

Elemente in einem Array ohne redundante Sortierung ordnen

Bei einem Array von Zahlen ist es oft notwendig, die Rangfolge jedes Elements zu bestimmen. Traditionell erfordert dies eine zweifache Sortierung des Arrays, was bei großen Datensätzen ineffizient sein kann. Allerdings kann die Verwendung eines effizienteren Ansatzes, der eine doppelte Sortierung vermeidet, die Leistung deutlich verbessern.

Eine alternative Methode nutzt die argsort-Funktion in NumPy wie folgt:

numpy.array([4,2,7,1])
temp = array.argsort()
ranks = numpy.arange(len(array))[temp.argsort()]
Nach dem Login kopieren

Dieser Ansatz ist zwar effektiv, beinhaltet aber dennoch zwei Iterationen durch das Array.

Optimierter Ansatz mit Double Argsort

Um den Ranking-Prozess zu optimieren, besteht eine effizientere Strategie darin, Argsort zweimal zu verwenden:

array = numpy.array([4,2,7,1])
order = array.argsort()
ranks = order.argsort()
Nach dem Login kopieren

Indem wir zuerst das Array sortieren, um die Reihenfolge zu erhalten, und dann argsort auf diese Reihenfolge anwenden, können wir die Ränge der Elemente ohne redundante Sortierung bestimmen.

Dieser optimierte Ansatz zeigt eine verbesserte Effizienz, insbesondere bei großen Datensätzen. da ein zusätzlicher Sortiervorgang entfällt. Denken Sie außerdem beim Arbeiten mit mehrdimensionalen Arrays daran, das Achsenargument in argsort anzugeben, um die Sortierachse entsprechend zu steuern.

Das obige ist der detaillierte Inhalt vonWie ordne ich Elemente in einem Array ohne redundante Sortierung effizient ein?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Quelle:php.cn
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Neueste Artikel des Autors
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage