Ordenar matriz por columna en NumPy

Muhammad Maisam Abbas 30 enero 2023
  1. NumPy Ordenar matriz por columna con la función numpy.sort()
  2. NumPy Ordenar matriz por columna con la función numpy.argsort()
Ordenar matriz por columna en NumPy

Este tutorial presentará métodos para ordenar un array por columna en NumPy.

NumPy Ordenar matriz por columna con la función numpy.sort()

Supongamos que tenemos un array 2D NumPy y queremos ordenar las filas de acuerdo con el orden de los elementos dentro de una columna específica. Podemos hacer esto con la función numpy.sort(). La función numpy.sort() ordena el array NumPy. Podemos especificar el índice de la columna y el eje en los parámetros order y axis de la función numpy.sort(). Necesitamos convertir nuestra matriz en un array estructurada con campos para usar la función numpy.sort(). Podemos usar la función numpy.view() para hacer eso. Vea el siguiente ejemplo de código.

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)

Producción :

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

Primero creamos el array 2D NumPy array con la función np.array(). Luego convertimos la array en un array estructurada con la función array.view(). Después de eso, ordenamos el array por segunda columna con la función sort(order=['f1'], axis=0). Aquí, f1 se refiere a la segunda columna.

NumPy Ordenar matriz por columna con la función numpy.argsort()

Otra forma más sencilla de hacer exactamente lo mismo que el método anterior es utilizar la función numpy.argsort(). La función numpy.argsort() también se usa para ordenar los elementos de un array. Es muy similar al enfoque anterior, pero no es necesario utilizar la función numpy.view() para que este enfoque funcione. La función numpy.argsort() devuelve los índices que se usarían para ordenar un array. Vea el siguiente ejemplo de código.

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)

Producción :

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

Primero creamos un array 2D NumPy array con la función np.array(). Luego usamos un segmento de array para especificar solo la segunda columna de la array y la ordenamos con la función np.argsort(). Usamos los índices devueltos por la función np.argsort() para ordenar la 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