Ordina array per colonna in NumPy

Muhammad Maisam Abbas 30 gennaio 2023
  1. NumPy Ordina array per colonna con la funzione numpy.sort()
  2. NumPy Ordina array per colonna con la funzione numpy.argsort()
Ordina array per colonna in NumPy

Questo tutorial introdurrà i metodi per ordinare un array per colonna in NumPy.

NumPy Ordina array per colonna con la funzione numpy.sort()

Supponiamo di avere un array NumPy 2D e di voler ordinare le righe in base all’ordine degli elementi all’interno di una colonna specifica. Possiamo farlo con la funzione numpy.sort(). La funzione numpy.sort() ordina l’array NumPy. Possiamo specificare l’indice di colonna e l’asse nei parametri order e axis della funzione numpy.sort(). Dobbiamo convertire il nostro array in un array strutturato con campi per utilizzare la funzione numpy.sort(). Possiamo usare la funzione numpy.view() per farlo. Vedere il seguente esempio di codice.

import numpy as np

array = np.array([[1, 1, 2], [0, 0, 1], [1, 1, 3]])
print("Array before sorting\n", array)

array.view("i8,i8,i8").sort(order=["f1"], axis=0)
print("Array after sorting\n", array)

Produzione:

Array before sorting
 [[1 1 2]
 [0 0 1]
 [1 1 3]]
Array after sorting
 [[0 0 1]
 [1 1 2]
 [1 1 3]]

Per prima cosa abbiamo creato l’array 2D NumPy array con la funzione np.array(). Quindi abbiamo convertito l’array in un array strutturato con la funzione array.view(). Successivamente, abbiamo ordinato l’array per seconda colonna con la funzione sort(order=['f1'], axis=0). Qui f1 si riferisce alla seconda colonna.

NumPy Ordina array per colonna con la funzione numpy.argsort()

Un altro modo più semplice per fare esattamente la stessa cosa dell’approccio precedente è usare la funzione numpy.argsort(). La funzione numpy.argsort() è usata anche per ordinare gli elementi di un array. È molto simile all’approccio precedente, ma non è necessario utilizzare la funzione numpy.view() affinché questo approccio funzioni. La funzione numpy.argsort() restituisce gli indici che verrebbero utilizzati per ordinare un array. Vedere il seguente esempio di codice.

import numpy as np

array = np.array([[1, 1, 2], [0, 0, 1], [1, 1, 3]])
print("Array before sorting\n", array)

array[array[:, 1].argsort()]
print("Array after sorting\n", array)

Produzione:

Array before sorting
 [[1 1 2]
 [0 0 1]
 [1 1 3]]
Array after sorting
 [[0 0 1]
 [1 1 2]
 [1 1 3]]

Per prima cosa abbiamo creato un array NumPy 2D array con la funzione np.array(). Abbiamo quindi utilizzato una sezione dell’array per specificare solo la seconda colonna dell’array e l’abbiamo ordinata con la funzione np.argsort(). Abbiamo usato gli indici restituiti dalla funzione np.argsort() per ordinare l’array.

Muhammad Maisam Abbas avatar Muhammad Maisam Abbas avatar

Maisam is a highly skilled and motivated Data Scientist. He has over 4 years of experience with Python programming language. He loves solving complex problems and sharing his results on the internet.

LinkedIn