Ordinare un array NumPy con la funzione np.sort
Un'operazione comune quando si lavora con i dati è l'ordinamento degli array. La funzione np.sort è uno strumento potente e versatile fornito da NumPy per ordinare array. Questa funzione può essere utilizzata per ordinare sia array unidimensionali che multidimensionali lungo un asse specificato.
La funzione supporta diversi algoritmi di ordinamento, che permettono di personalizzare le prestazioni in base alle esigenze specifiche dell'operazione.
La sintassi di base per utilizzare np.sort è la seguente:
import numpy as np
# Sintassi base
array_ordinato = np.sort(array, axis=-1, kind=None, order=None)
I parametri principali di np.sort sono:
array: l'array da ordinare.
axis: l'asse lungo il quale effettuare l'ordinamento. Il valore predefinito è -1, che indica l'ultimo asse.
kind: il tipo di algoritmo di ordinamento da utilizzare. Può essere 'quicksort', 'mergesort', 'heapsort', o 'stable'.
order: specifica l'ordine degli elementi nel caso di array strutturati.
Ordinare array unidimensionali di NumPy con np.sort
Per ordinare un array unidimensionale, la funzione np.sort può essere utilizzata senza specificare l'asse. Ecco un esempio semplice:
import numpy as np
# Creazione di un array unidimensionale
array = np.array([3, 1, 4, 1, 5, 9, 2, 6, 5])
# Ordinamento dell'array
array_ordinato = np.sort(array)
print("Array originale:", array) # Array originale: [3 1 4 1 5 9 2 6 5]
print("Array ordinato:", array_ordinato) # Array ordinato: [1 1 2 3 4 5 5 6 9]
Ordinare array multidimensionali con la funzione np.sort
La funzione np.sort è altrettanto efficace nel gestire array multidimensionali. È possibile specificare l'asse lungo il quale ordinare gli elementi. Consideriamo un esempio:
import numpy as np
# Creazione di un array 2D
array_2d = np.array([[3, 1, 4], [1, 5, 9], [2, 6, 5]])
# Ordinamento lungo l'asse 0 (colonne)
array_ordinato_asse0 = np.sort(array_2d, axis=0)
# Ordinamento lungo l'asse 1 (righe)
array_ordinato_asse1 = np.sort(array_2d, axis=1)
print("Array originale:\n", array_2d)
print("Array ordinato lungo l'asse 0:\n", array_ordinato_asse0)
print("Array ordinato lungo l'asse 1:\n", array_ordinato_asse1)
Array originale:
[[3 1 4]
[1 5 9]
[2 6 5]]
Array ordinato lungo l'asse 0:
[[1 1 4]
[2 5 5]
[3 6 9]]
Array ordinato lungo l'asse 1:
[[1 3 4]
[1 5 9]
[2 5 6]]
Nell'esempio precedente, axis=0 ordina gli elementi lungo le colonne, mentre axis=1 ordina lungo le righe.
Algoritmi di ordinamento
NumPy offre quattro algoritmi di ordinamento tra cui scegliere:
quicksort: è l'algoritmo di ordinamento predefinito. È veloce ma non stabile.
mergesort: è stabile, il che significa che mantiene l'ordine relativo degli elementi uguali.
heapsort: è un algoritmo di ordinamento basato sull'heap, meno comune, ma utile in casi specifici.
stable: mantiene l'ordine degli elementi uguali, ed è l'opzione consigliata quando la stabilità è importante.
array_ordinato_stabile = np.sort(array, kind='stable')
print("Array ordinato (stabile):", array_ordinato_stabile)