Ordenar arreglo en Python (array sort)

En este tutorial explicamos cómo ordenar un arreglo en Python (array sort), para esto se usa el comando Sort de la libreira Numpy, así podemos ordenar no solo listas, sino arreglos. Ya sea ordenar por nombre, edad, etc. Según el parámetro que definamos.

Python array sort

Resumen rápido Python array sort, numpy.

En este resumen rápido explicamos el comando sort, de la librería numpy en Python. El cual nos ayuda a ordenar nuestros array. Teniendo algunas opciones para hacerlo.

Tiene 4 parámetros, recuerda importar la librería Numpy primero:

np.sort( arreglo, axis = -1, kind = None, order = None)

Dónde:

  • Arreglo, es el array a ordenar.
  • Axis, es opcional, aquí decidimos si queremos ordenar las filas (-1) o las columnas (0). Puede ser int o None. En caso de ser None, regresa todos los valores en un arreglo 1D o lista. Por default vale -1.
  • Kind, es opcional, por default vale “quicksort”. Es el algoritmo para ordenar, la diferencia es la velocidad en que ordenan, se sugiere dejar el valor predefinido a menos de que nos interese algo muy específico.
  • Order, es opcional, Este parámetro se usa, cuando nuestro arreglo tiene parámetros definidos. Con este argumento podemos determinar cuál argumento se compara primero, si son iguales cual es el segundo parámetro, tercero, etc.

Nota: Parámetro definido, significa que nuestro arreglo tiene títulos o identificamos cada columna. Por ejemplo, Nombre, edad, estatura, etc.

Ejemplo del código es el siguiente, donde primero definimos la función imprimir, para mostrar un poco mejor el arreglo.

import numpy as np

def imprimir(z):
    for k in range(len(z)):
        l=""
        for i in range(len(z[0])):
            l = l + "\t" +str(z[k][i])
            print(l)


m = [("Dany", 27, 1.78), ("Alan", 31,1.67), ("Javi",22,1.81), ("Riky",25,1.73)]
print("Arreglo original:")
imprimir(m)

orden = np.sort(m,  axis=0)

print("\nArreglo ordenado axis=0:")
imprimir(orden)

titulos = [ ("Nombre", "S10"),("Edad", int),("Estatura", float)]
a = np.array(m,  dtype=titulos)

orden =np.sort(a,  order = "Edad")

print("\nArreglo ordenado order = Edad:")
imprimir(orden)

Ejemplo ordenar arreglo en Python.

Vamos a ordenar un array usando el comando sort, de la librería numpy en Python. En el resumen rápido ya explicamos los 4 parámetros que esta función usa, 3 de ellos son opcionales, así que podemos comenzar ordenando un array usando solo un parámetro.

Tenemos los siguientes datos:

Primero escribiremos un código en Python para tener un arreglo con esos valores y mostrarlo.

Luego usaremos el comando Sort con un único parámetro.

import numpy as np

def imprimir(z):
    for k in range(len(z)):
        l=""
        for i in range(len(z[0])):
            l = l + "\t" +str(z[k][i])
            print(l)

m = [("Dany", 27, 1.78), ("Alan",  31, 1.67), ("Javi", 22, 1.81), ("Riky", 25, 1.73)]
print("Arreglo original:")
imprimir(m)

orden = np.sort( m )

print("\nArreglo ordenado:")
imprimir(orden)

Definimos la función imprimir, para poder mostrar ordenadamente el arreglo, esta funcion la llamaremos siempre que imprimamos un arreglo.

Numpy sort array

Nos esta ordenando cada fila, de menor a mayor dejando el nombre al final.

Si queremos que ordene las columnas agregaremos el parámetro axis=0.

orden = np.sort( m, axis = 0 )

Y este será el resultado:

Ordenar arreglo python

Ya nos ordena las columnas, aunque cada columna esta ordenada individualmente. Lo cual nos eta alterando el orden de nuestros datos originales.

Ordenar con parámetros definidos Python array sort.

Para no alterar los datos de la tabla con el comando sort, podemos definir títulos a cada columna. Y en base a ese título ordenar nuestro arreglo, algo similar a Excel.

Primero debemos definir el título y tipo de variable de cada columna, esto lo guardaremos en una variable que llamaremos “titulos”

titulos = [ (“Nombre”, “S10”),(“Edad”, int),(“Estatura”, float)]

Indicamos que la primer columna se llama “Nombre“ es String de 10 caracteres, la segunda columna se llama “Edad” tipo int y la tercera “Estatura” es tipo float.

Ahora, agregamos esos títulos a nuestro array, con el parámetro dtype. Guardaremos este nuevo arreglo en la variable “a”.

a = np.array(m,  dtype = titulos)

Con esto ya podemos usar el parámetro order,  del comando sort, de Numpy en Python, de la siguiente manera:

orden =np.sort(a,  order = “Edad”)

El código completo, ordenando en base al Nombre, es el siguiente:

import numpy as np

def imprimir(z):
    for k in range(len(z)):
        l=""
        for i in range(len(z[0])):
            l = l + "\t" +str(z[k][i])
            print(l)


m =[("Dany", 27, 1.78), ("Alan", 31,1.67), ("Javi",22,1.81), ("Riky",25,1.73)]
print("Arreglo original:")
imprimir(m)

titulos = [("Nombre", "S10"),("Edad", int),("Estatura", float)]
a = np.array(m, dtype=titulos)

orden =np.sort(a, order = "Nombre")

print("\nArreglo ordenado Order = Nombre:")
imprimir(orden)

Python ordenar array, sort

Para más tutoriales de Python ve a este enlace.

Algunos temas de interés:

Python try except (trycatch python).

Python transpose array (Matriz transpuesta).

Matplotlib símbolos y letras griegas.