Numerical Python, o NumPy es un paquete fundamental y básico para el alto rendimiento en calculo científico y el análisis de datos, y un paquete de referencia para herramientas de alto nivel. Entre sus características:
- ndarray, que es un objeto matriz de N dimensiones, rápido, flexible y que permite realizar operaciones con largos “data sets”. Por ejemplo, se pueden hacer operaciones matemáticas a nivel de bloque usando una sintaxis cómo si trabajaramos con escalares. Cada ndarray tiene una shape, que es una tupla que indica los tamaños de cada dimensión, y dtype que permite conocer el tipo de datos de la matriz.
- Funciones matemáticas standar para acelerar las operaciones sobre el total de las matrices, sin necesidad de escribir bucles
- Herramientas para lectura y escritura de matrices de datos a disco, y trabajar en memoria
- Algebra lineal, números aleatorios o trasformadas de Fourier
- Herramientas para integrar código escrito en C, C++ y Fortran
Imprescindible
Si antes o después trabajas con datos … acabarás utilizando numpy. … lo quieras o no!
Porque NumPy no está especializado en análisis de datos, pero su conocimiento es casi imprescindible porque es una librería ampliamente usada por otras que sí están más centradas en análisis de datos, como pandas, y aquí es vital el conocimiento de ndarray y los objetos array incluidos en dicha librería, pues permite acelerar el cálculo básico entre matrices y vectores.
ndarray es un objeto multidimensional que contiene datos homogeneos.
Toda matriz tiene un tamaño, y un tipo (shape and dtype).
Quizás, una de las cosas básicas que debes saber sobre ndarray es que cuando haces una selección de un objeto, éste NO es copiado. Lo vemos en un pequeño ejemplo, cuyo código es:
# Manejando datos con NumPy import numpy as np arr = np.arange(10) print arr print arr[4:6] barr = np.array(arr) carr = arr[4:6] carr[:] = 12 print "Original " print arr print "Copia " print barr print "Slicing and Index" print carr
En primer lugar, importamos la libreria NumPy para trabajar con ella, y nos creamos un ndarray con 10 elementos.
Hacemos un nuevo array tomando como base el original. Comprobamos que NO sufre modificaciones.
Creamos una nueva variable carr seleccionando unos cuantos elementos de la variable original. Vemos que al modificar los elementos también quedan modificados los elementos de la matriz orignal:
Las matrices de NumPy no son cómo las listas
Veamos otro ejemplo de la diferencia entre trabajar con listas, y con ndarray. Un simple ejemplo:
import numpy as np mi_lista = [1,4,6,3] print mi_lista print mi_lista * 2 mi_array = np.array(mi_lista) print mi_array print mi_array * 2
Y el resultado:
Multiplicar la lista dos 2 supone ampliar la lista a 8 elementos, mientras que hacerlo con una matriz de NumPy supone multiplicar por dos los elementos. Podíamos haberlo hecho mediante [ x * 2 for x in mi_lista ] , pero creo que con numpy es mucho más intuitivo.
En general, NumPy es una de esas librerías complejas que hay que ir dominando poco a poco, y … en ello estamos!