Python

NumPy: Cómo ordenar una matriz NumPy en Python

En NumPy existe el método np.sort() con el que se puede ordenar una matriz NumPy. Un método que ofrece varias opciones las que discutiremos a continuación.

Ordenar un vector

En primer lugar, podemos crear un vector de números enteros ordenados aleatoriamente. Lo que se puede conseguir utilizando el método np.random.shuffle() sobre un vector que se ha creado con np.arange(). Para que el resultado sea siempre el mismo, se puede fijar el valor de la semilla con el método np.random.seed().

import numpy as np

np.random.seed(0)

arr = np.arange(10)
np.random.shuffle(arr)
[2, 8, 4, 9, 1, 6, 7, 3, 0, 5]

Ahora para ordenar el vector solamente tenemos que usar el método sort() del propio objeto.

arr.sort()
[0, 1, 2, 3, 4, 5, 6, 7, 8, 9]

Obtener el vector ordenado en un nuevo objeto

El método sort() del vector trabaja modificando el propio objeto. En el caso de que necesitemos que el vector ordenado sea un objeto nuevo, se puede utilizar el método de la librería y asignar el resultado al nuevo objeto. Por ejemplo, volviendo a desordenar el objeto se pueden obtener los dos valores.

np.random.shuffle(arr)

sorted_arr = np.sort(arr)

En donde arr es [3 5 1 2 9 8 0 6 7 4], mientras que sorted_arr es [0 1 2 3 4 5 6 7 8 9].

Ordenar una vector en orden inverso

Si queremos ordenar los valores de mayor a menor se tiene que hacer invirtiendo los elementos del vector una vez ordenados. Ya que actualmente el método sort() de NumPy no dispone de una opción para hacer esto directamente.

reverse_arr = np.sort(arr)[::-1]
[9, 8, 7, 6, 5, 4, 3, 2, 1, 0]

Cambiar el método de ordenación

Por defecto sort() emplea el algoritmo de ordenación quicksort, aunque es posible cambiarlo por otros. Pudiéndose elegir alguno de los algoritmos que soporta actualmente: quicksort, mergesort, heapsort y stable. La opción del método para seleccionar uno de los algoritmos es kind.

quicksort = np.sort(arr, kind='quicksort')
mergesort = np.sort(arr, kind='mergesort')
heapsort = np.sort(arr, kind='heapsort')
stable = np.sort(arr, kind='stable')

En todos los casos se obtiene el mismo resultado. Aunque esta opción sea posiblemente una de las que menos se utilizan, pero es interesante conocerla.

Ordenar una matriz NumPy

Finalmente, se puede ver cómo ordenar una matriz NumPy. Para lo que se puede crear una a partir de un vector con el método reshape.

mat = np.arange(12).reshape((3, 4))
np.random.shuffle(mat)
[[ 4  5  6  7]
 [ 0  1  2  3]
 [ 8  9 10 11]]

La única diferencia a la hora de ordenar una matriz respecto a un vector es la necesidad de indicar el eje de ordenación. Mediante el método axis. En el caso de querer ordenar por columnas este es 1.

mat.sort(axis=1)
[[ 4  5  6  7]
 [ 0  1  2  3]
 [ 8  9 10 11]]

Mientras que para ordenar por filas el valor que se debe indicar es 0.

mat.sort(axis=0)
[[ 0  1  2  3]
 [ 4  5  6  7]
 [ 8  9 10 11]]

Conclusiones

En esta entrada hemos vistos algunas de las diferentes formas que tenemos para ordenar una matriz NumPy en Python. Operaciones que son bastante habituales en el día a día. ¿Te parecen útiles estos métodos de ordenación? ¿Usas algún truco diferente? Puede dejar tus opiniones a continuación en la sección de comentarios.

¿Te ha parecido de utilidad el contenido?

Daniel Rodríguez

Share
Published by
Daniel Rodríguez
Tags: NumPy

Recent Posts

Por qué migrar tus proyectos TypeScript a ES Modules en 2026

Durante años, CommonJS (require/module.exports) ha sido la forma por defecto de organizar módulos en Node.js,…

3 días ago

Método del codo: interpretación correcta y limitaciones

Cuando usas k-means tienes que decidir algo incómodo de entrada: cuántos grupos, , vas a…

5 días ago

Errores comunes al interpretar resultados estadísticos

La estadística no suele fallar en los cálculos: falla en la interpretación. El test está…

1 semana ago

Dashboard CLV: cuatro modelos, un mismo dataset, conclusiones muy distintas

Los artículos anteriores de esta serie cubrieron cuatro formas de mirar el valor del cliente:…

2 semanas ago

Curiosidad: Por qué la criptografía habla siempre de Alice y Bob

Quien se acerca a la criptografía descubre enseguida a dos personajes que aparecen en casi…

2 semanas ago

Desbalanceo de Clases en Credit Scoring: Por Qué Usamos Ponderación en lugar de Undersampling

En credit scoring el desbalanceo de clases es la norma, no la excepción. En una…

3 semanas ago

This website uses cookies.