Introducción al análisis de datos en Python con Numpy

La clase array de numpy

La programación gráfica se fundamenta sobre la idea de manipular información almacenada en unas estructuras conocidas como vectores y matrices. En Python la única forma de simular estas estructuras es usando listas y lo malo es que son muy limitadas respecto a las funciones matemáticas que permiten. Numpy viene a solucionar esa carencia ofreciéndonos un nuevo tipo de dato llamado array.

Un array es parecido a una lista en Python y de hecho se pueden crear a partir de ellas:

# Normalmente se suele importar numpy como np ya para ahorrar tiempo
import numpy as np

# Podemos crear un arreglo a partir de
array = np.array([1, 2, 3, 4, 5])

# Y lo mostramos
print(array)

Lo primero que notaremos al mostrar un array por pantalla es que a diferencia de las listas sus elementos no están separados por comas.

Podemos consultar el tipo de la variable:

print(type(array))

Este array formado a partir de una lista se considera un array de una dimensión, también conocido como vector.

Dimensión y forma de un array

Podemos consultar la dimensión y forma de un array con sus propiedades ndim y shape:

print(array.ndim)
print(array.shape)

Esto nos devolverá una tupla (4,) haciendo referencia el primer valor a que nuestro array tiene 4 elementos en la primera dimensión, que es la de la anchura.

Ahora bien, si nosotros definimos un array a partir de una lista anidada formada por dos sublistas:

array = np.array([
    [1, 2, 3, 4, 5],
    [6, 7, 8, 9, 10]
])
print(array)
print(array.ndim)
print(array.shape)

Veremos algo interesante, y es que el array se muestra como una tabla de 2 filas con 5 columnas, números que precisamente concuerdan con la forma (2, 5).

Estas estructuras formadas por filas y columnas parecidas a una tabla tienen dos dimensiones, anchura y altura (por eso nos dice que tiene 2 dimensiones). También se conocen como vectores multidimensionales, vectores 2D o matrices.

Por acabar la lección otro concepto importante y es que podemos consultar el tipo de los arrays.

Tipo de un array

Por ejemplo cuando tenemos un array formado por números enteros:

array = np.array([1, 2, 3, 4, 5])
print(array.dtype)

El tipo del array es automáticamente establecido como int32 (enteros de 32 bits).

En cambio si uno de los valores fuera decimal:

array = np.array([1, 2, 3, 4, 5, 6.1234])
print(array.dtype)

Entonces el tipo ya sería float64 (flotantes de 64 bits).

Incluso podríamos almacenar cadenas:

array = np.array(["Hola", "que", "tal"])
print(array.dtype)

Pero en este caso nos indica un tipo extraño llamado <U4. Según la documentación de numpy esto hace referencia a que el array es de tipo Unicode, es decir, es un array de texto.

Esto sucede de igual forma si mezclamos números y textos:

array = np.array(["Hola", 1234, 3.1415])
print(array.dtype)

Ahora nos dice que el tipo es <U6 y si mostramos su contenido veremos que todo son cadenas de texto:

print(array)

Bien, con esto queda claro que los arrays no son listas, sino unas estructuras pensadas para almacenar vectores y matrices, que son conscientes en todo momento de su dimensión, forma y tipo.