Notice: This page requires JavaScript to function properly.
Please enable JavaScript in your browser settings or update your browser.
Lernen Sortieren von 2D-Arrays | Häufig Verwendete NumPy-Funktionen
Ultimatives Numpy

book
Sortieren von 2D-Arrays

Wie Sie sehen können, sortiert das einfache Übergeben unseres 2D-Arrays an die Funktion sort() jedes 1D-Array entlang der Achse 1 (was die Standardoption in einem 2D-Array ist). Das Setzen von axis=0 sortiert jedes 1D-Array entlang der Achse 0 (jede Spalte).

Das Setzen von axis=None gibt ein zusammenhängend sortiertes 1D-Array aller Elemente des 2D-Arrays zurück.

import numpy as np
array_2d = np.array([[2, 9, 3], [1, 6, 4], [5, 7, 8]])
# Sorting a 2D array along axis 1
print(np.sort(array_2d))
# Sorting a 2D array along axis 0
print(np.sort(array_2d, axis=0))
# Creating a 1D sorted array out of the elements of array_2d
print(np.sort(array_2d, axis=None))
12345678
import numpy as np array_2d = np.array([[2, 9, 3], [1, 6, 4], [5, 7, 8]]) # Sorting a 2D array along axis 1 print(np.sort(array_2d)) # Sorting a 2D array along axis 0 print(np.sort(array_2d, axis=0)) # Creating a 1D sorted array out of the elements of array_2d print(np.sort(array_2d, axis=None))
copy

Sortieren von 2D-Arrays in absteigender Reihenfolge

Beim Sortieren von 2D-Arrays in absteigender Reihenfolge entlang einer gegebenen Achse müssen Sie zwei Slices verwenden: ein vollständiges Slice ([:]) und ein weiteres mit einem negativen Schritt ([::-1]). Die Position des Slices mit dem negativen Schritt sollte der Achse entsprechen, entlang der Sie sortieren.

Hinweis

Beim Sortieren entlang der Achse 0 können Sie nur ein Slice mit einem negativen Schritt verwenden, da es bereits entlang dieser Achse indiziert.

import numpy as np
array_2d = np.array([[2, 9, 3], [1, 6, 4], [5, 7, 8]])
# Sorting a 2D array along axis 1 in descending order
print(np.sort(array_2d)[:, ::-1])
# Sorting a 2D array along axis 0 in descending order
print(np.sort(array_2d, axis=0)[::-1])
# Creating a 1D sorted array out of the elements of array_2d in descending order
print(np.sort(array_2d, axis=None)[::-1])
12345678
import numpy as np array_2d = np.array([[2, 9, 3], [1, 6, 4], [5, 7, 8]]) # Sorting a 2D array along axis 1 in descending order print(np.sort(array_2d)[:, ::-1]) # Sorting a 2D array along axis 0 in descending order print(np.sort(array_2d, axis=0)[::-1]) # Creating a 1D sorted array out of the elements of array_2d in descending order print(np.sort(array_2d, axis=None)[::-1])
copy
Aufgabe

Swipe to start coding

Sie haben ein 2D-Array namens exam_scores, das die Ergebnisse für jede Prüfung eines bestimmten Fachs enthält. Jede Spalte repräsentiert ein spezifisches Fach, und jede Zeile repräsentiert einen einzelnen Schüler. Somit zeigt eine bestimmte Zeile die Ergebnisse dieses Schülers für jede Prüfung.

  1. Erstellen Sie ein 2D-NumPy-Array namens top_scores_subject basierend auf exam_scores, bei dem jede Spalte, die ein bestimmtes Fach repräsentiert, nach Ergebnissen in absteigender Reihenfolge sortiert ist.

  2. Erstellen Sie ein 1D-NumPy-Array namens sorted_scores basierend auf exam_scores, das alle Ergebnisse in aufsteigender Reihenfolge enthält.

Auf diese Weise können Sie leicht die höchsten Ergebnisse für jede Prüfung und die niedrigsten Ergebnisse über alle Prüfungen hinweg identifizieren.

Lösung

import numpy as np
# Simulated exam scores for three students in three subjects
exam_scores = np.array([[75, 82, 90], [92, 88, 78], [60, 70, 85]])
# Create an array with every column sorted by scores in descending order
top_scores_subject = np.sort(exam_scores, axis=0)[::-1]
# Create a 1D array of all scores sorted in ascending order
sorted_scores = np.sort(exam_scores, axis=None)
print(top_scores_subject)
print(sorted_scores)

War alles klar?

Wie können wir es verbessern?

Danke für Ihr Feedback!

Abschnitt 3. Kapitel 2
import numpy as np
# Simulated exam scores for three students in three subjects
exam_scores = np.array([[75, 82, 90], [92, 88, 78], [60, 70, 85]])
# Create an array with every column sorted by scores in descending order
top_scores_subject = ___.___(___, ___=___)[___]
# Create a 1D array of all scores sorted in ascending order
sorted_scores = ___.___(___, ___=___)
print(top_scores_subject)
print(sorted_scores)
toggle bottom row
some-alt