np.sort() în NumPy

Sortează elementele unui tablou: np.sort returnează o copie, a.sort() sortează pe loc; ordinea descrescătoare cu [::-1].

Sintaxă
np.sort(a, axis=-1, kind=None, stable=None, descending=False)
a.sort(axis=-1, kind=None, stable=None, descending=False)

Ce face np.sort()

np.sort(a) returnează o copie sortată crescător, iar tabloul inițial rămâne neschimbat. Metoda a.sort() sortează chiar tabloul a (pe loc) și returnează None.

Implicit sortarea se face pe ultima axă (axis=-1): într-un tablou 2D, fiecare rând este sortat separat. Cu axis=0 se sortează fiecare coloană, iar cu axis=None tabloul este aplatizat și sortat în întregime. Valorile nan ajung la final.

Pentru ordine descrescătoare, varianta care merge în orice versiune este să inversezi rezultatul: np.sort(a)[::-1]. Din NumPy 2.5 există și parametrul descending=True. Pentru o sortare stabilă (elementele egale își păstrează ordinea) dai stable=True (NumPy 2.0+) sau kind='stable'.

Parametri

Parametru Descriere
a Tabloul de sortat.
axis Axa de sortare: implicit -1 (ultima), 0, sau None pentru tabloul aplatizat.
kind Algoritmul: 'quicksort' (implicit), 'mergesort', 'heapsort', 'stable'.
stable Dacă este True, sortarea este stabilă (NumPy 2.0+).
descending Dacă este True, ordinea este descrescătoare (NumPy 2.5+).

Ce returnează

np.sort: un tablou nou, sortat, de aceeași formă. a.sort(): None (modifică a).

Exemple

Exemplul 1: Copie sortată sau sortare pe loc

import numpy as np

preturi = np.array([45.5, 12.0, 99.9, 30.0])
sortat = np.sort(preturi)
print(sortat)
print(preturi)

rezultat = preturi.sort()
print(rezultat)
print(preturi)

Rezultat

[12.  30.  45.5 99.9]
[45.5 12.  99.9 30. ]
None
[12.  30.  45.5 99.9]

Exemplul 2: Ordine descrescătoare

import numpy as np

note = np.array([7, 10, 5, 9, 8])
print(np.sort(note)[::-1])
print(np.sort(note, descending=True))

Rezultat

[10  9  8  7  5]
[10  9  8  7  5]

Exemplul 3: Sortare pe rânduri, pe coloane și pe tot tabloul

import numpy as np

a = np.array([
    [9, 2, 5],
    [1, 8, 3],
])
print(np.sort(a))
print(np.sort(a, axis=0))
print(np.sort(a, axis=None))

Rezultat

[[2 5 9]
 [1 3 8]]
[[1 2 3]
 [9 8 5]]
[1 2 3 5 8 9]

Greșeli frecvente

  • Scrii a = a.sort(): metoda returnează None, deci pierzi tabloul. Folosește fie a.sort() singur, fie a = np.sort(a).
  • Sortezi separat coloanele unui tabel și strici legătura dintre valorile de pe același rând. Ca să sortezi rândurile după o coloană, folosește np.argsort().
  • Folosești descending=True pe o versiune mai veche de NumPy 2.5 și primești TypeError. Pentru compatibilitate, folosește [::-1].

Comenzi înrudite

  • np.argsort(): Returnează indicii care ar sorta tabloul; așa sortezi un tablou după altul, de exemplu numele după note.
  • np.unique(): Returnează valorile distincte dintr-un tablou, sortate, și opțional de câte ori apare fiecare (return_counts).
  • np.percentile(): Calculează percentile (q între 0 și 100) cu np.percentile sau cuantile (q între 0 și 1) cu np.quantile.
  • Copie și vedere (copy vs view): Explică diferența dintre o vedere (aceleași date) și o copie în NumPy și cum le recunoști cu .base și np.shares_memory.