PyLab [Parte 1]: Python se viste de MatLab
Convertir a Dr. Jekyll en Mr Hyde
Sabemos que Python es una herramienta muy versátil por eso de ser un lenguaje de programación multi-paradigma (sirve para programación concurrente, programación orientada a objetos, etc). Pero si no nos conformarnos con las funcionalidades que trae de serie este lenguaje podemos dotarle de habilidades extra y convertir a Dr. Jekyll en Mr Hyde. Para esto, debemos instalar librerías que circulan por Internet. Dependiendo del sistema operativo que uses existen diferentes maneras de instalar librerías. Os resumo brevemente cómo instalar las librerías para Windows y para Linux.
Instalando librerías
En sistemas Windows:
- Descargando los binarios
Descargamos los binarios ya compilados. Es muy importante que ejecutemos los instaladores con permisos de administrador. Si no no irá bien. Una página con toda una infinidad de binarios para descargar es: binarios de librerias Python para Windows
- Con setuptools
Debes tener instalado setuptools previamente. En Python 3 viene instalado por defecto y en Python 2 lo tenéis que instalar mediante el método de descargar los binarios. Una vez tenemos setuptools instalado podemos bajarnos el código fuente de las librerías y descomprimimos el contenido en una carpeta. Abrimos la consola de Windows (símbolo del sistema) con permisos de administrador, navegamos hasta la carpeta con el script setup.py que acabamos de crear y ejecutamos el comando:
python setup.py install
- Con pip
Es un administrador de paquetes de Python. En Windows está peor implementado, pero también se puede usar.
En sistemas Linux:
- Con pip
Pip es la mejor opción para obtener nuevas librerías en sistemas Linux. Puedes instalar cualquier librería abriendo una terminal e introduciendo:
sudo pip install [nombre librería]
PyLab, el camino hacia MatLab
De entre la infinidad de librerías que circulan por la red nos detenemos ante PyLab que no es una librería sino un conglomerado de varias librerías entre las que se incluyen numpy, scipy, sympy, pandas, matplotlib, ipython. Con esta suite podremos usar de manera muy parecida al interprete de Python como si de MatLab se tratara y hacer nuestros .py como si fueran scripts de MatLab.
¿Por qué usar PyLab en vez de MatLab? Creo que es interesante el uso de PyLab porque es un programa de código abierto por lo cual no dependes de caras licencias, desde el punto de vista de la eficiencia está comprobado que PyLab consigue mejores rendimientos en el calculo que MatLab en casi todas las operaciones, tiene también la ventaja de servir para Linux y para Windows y no tener que estar condenados a usar el sistema de Microsoft, además estás programando en python por tanto puedes juntar los programas de cálculo con todas las demás opciones que éste ofrece, sin olvidar que la sintaxis es la de Python conocida por su simplicidad.
Para instalar todos los paquetes de PyLab podemos utilizar:
- Ubuntu/Debian
sudo apt-get install python-numpy python-scipy python-matplotlib ipython ipython-notebook python-pandas python-sympy python-nose
- Fedora
sudo yum install numpy scipy python-matplotlib ipython python-pandas sympy python-nose
- Windows: instalando el stack pack: enlace de descarga.
Programa ejemplo:
Para ver lo que somos capaces de hacer con esta herramienta, el primer ejemplo, aunque no será muy complicado resuelve eficazmente un problema que ha sido una constante en mis laboratorios de la universidad. Hacer una regresión lineal dada una nube de puntos.
Podemos abrir el interprete de Python o crear un regresion.py con estas líneas y ejecutarlo.
##Importamos Librerias## import numpy as np import matplotlib.pyplot as plt #Creamos la nube de puntos x = np.array([0, 1, 2, 3]) y = np.array([1, 1.5, 1.8, 2.6]) #Construimos una matriz A = np.vstack([x, np.ones(len(x))]) A = A.T #Hacemos su traspuesta #Obtenemos parametros de la recta m, c = np.linalg.lstsq(A, y)[0] print ("La recta obtenida es: y = " + str(m) + "x + " + str(c)) plt.plot(x, y, 'o', label='Nube puntos', markersize=15) plt.plot(x, m*x + c, 'r', label='Regresion Lineal') plt.legend() plt.show() raw_input("Enter para salir")
El resultado del programa:
No se cuantos tutoriales pueden salir de PyLab, según voy aprendiendo voy publicando. Nos vemos en más tutoriales sobre Python, Arduino, etc... ¡Hasta la próxima!