Entorno IPython

Python es un poderoso lenguaje interpretado (no es compilado como C o Fortran) que incorpora múltiples funcionalidades a través de los miles de paquetes aportados por una activa comunidad de usuarios. Viene instalado por defecto en la mayoría de las distribuciones Linux.

IPython es un entorno interactivo que permite ejecutar comandos de Python incorporando algunas características gráficas como el resaltado de errores. Primero veamos cómo instalar IPython en una distribución Linux, por ejemplo, en Ubuntu. Ir a un terminal y escribir:

> sudo apt-get install ipython

Una vez instalado IPython puede ejecutarse desde terminal simplemente escribiendo:

> ipython

Ya deberían estar en el entorno IPython viendo en su terminal algo como esto:

IPython 1.2.1 -- An enhanced Interactive Python.

? -> Introduction and overview of IPython's features.

%quickref -> Quick reference.

help -> Python's own help system.

object? -> Details about 'object', use 'object??' for extra details.

In [1]:

Para salir de IPython: Ctrl+D

Primeros Pasos: Operaciones Básicas

Podemos realizar operaciones básicas de manera sencilla

In [1]:
1+2
Out[1]:
3
In [34]:
3**2
Out[34]:
9
In [2]:
12.0/2.5-4.0/3.0
Out[2]:
3.466666666666667

Paquete Numpy

Si necesitamos realizar operaciones matemáticas más sofisticadas es necesario importar alguno de los paquetes de computación científica de Python. En particular, vamos a importar uno que incluye muchas funciones, arreglos y herramientas matemáticas complejas llamado numpy. Existen al menos dos formas alternativas para importar un paquete. La primera importa todas las funciones asociadas con el módulo numpy. Para ello escribimos en el terminal de IPython:

In [4]:
from numpy import *

Ahora podemos usar todas las funciones asociadas con el paquete numpy de forma directa:

In [5]:
sqrt(2)
Out[5]:
1.4142135623730951
In [10]:
sin(0)
Out[10]:
0.0
In [7]:
pi
Out[7]:
3.141592653589793
In [11]:
arange(0,1,0.1)
Out[11]:
array([ 0. ,  0.1,  0.2,  0.3,  0.4,  0.5,  0.6,  0.7,  0.8,  0.9])

Para conocer algunas de las funciones asociadas a numpy pueden googlear o acceder a la ayuda interactiva escribiendo en el terminal de IPython:

In []:
help()

Para salir del help() escriban q y luego presionen Enter.

Habíamos dicho que existen al menos dos alternativas para importar paquetes o módulos. La otra forma de importar un paquete, en nuestro caso numpy, es definiendo un alias breve (en nuestro caso np) que luego será utilizado como prefijo para llamar a las funciones asociadas:

In [23]:
import numpy as np
In [24]:
np.sqrt(2)
Out[24]:
1.4142135623730951
In [26]:
np.sin(0)
Out[26]:
0.0
In [27]:
np.pi
Out[27]:
3.141592653589793

También es posible importar tan solo una de las funciones incorporadas en un módulo. Esto se hace con fines de optimización si es que solo vamos a emplear una función de un módulo muy extenso. Sin embargo, en aplicaciones cotidianas no es necesario hacerlo. Por ejemplo, importemos solo la función sin() del paquete numpy:

In [28]:
from numpy import sin
In [29]:
sin(0.0)
Out[29]:
0.0

Gráficos en Python con Matplotlib

Por supuesto, Python ofrece la posibilidad de graficar funciones en 2D y 3D, realizar scatter plots, heat maps, histogramas, entre otros. Para realizar gráficos sencillos en 2D importaremos el módulo Matplotlib.pyplot:

In [35]:
from matplotlib.pyplot import *

Ahora agregaré un comando que permitirá ver un gráfico en este notebook debajo de la línea de código que lo invoca:

In [39]:
%matplotlib inline

Supongamos que queremos graficar la función sin(x), comencemos por definir el dominio para x:

In [37]:
x=arange(-2*pi,2*pi,0.01)

En este caso, definimos un array real x en el intervalo [-2pi,2pi] con un paso igual a 0.01. Nota: arange() define una sucesión equiespaciada dentro de los números reales mientras que range() lo hace dentro de los enteros (ambas son funciones de numpy). Ahora grafiquemos sin(x):

In [40]:
plot(x,sin(x),'-r')
Out[40]:
[<matplotlib.lines.Line2D at 0x7f9beefcabd0>]

El '-r' dentro del comando plot indica la opción de línea de trazo continuo de color rojo. Pueden ver la documentación de plot del siguiente modo:

In []:
?plot

Podemos agregar nombres a los ejes del siguiente modo:

In [44]:
xlabel(r'$x$'); ylabel(r'$\sin(x)$'); plot(x,sin(x),'-r')
Out[44]:
[<matplotlib.lines.Line2D at 0x7f9beecd7b90>]

También pueden cambiar el rango de x e y:

In [51]:
xlabel(r'$x$'); ylabel(r'$\sin(x)$'); xlim([-3*pi,3*pi]); ylim([-2,2]); plot(x,sin(x),'-r')
Out[51]:
[<matplotlib.lines.Line2D at 0x7f9beea0de50>]

o combinar varios gráficos:

In [68]:
xlabel(r'$x$'); ylabel(r'$y$'); xlim([-3*pi,3*pi]); ylim([-2,2]); plot(x,sin(x),'-r',label=r'$\sin(x)$'); 
plot(x,cos(x),'-b',label=r'$\cos(x)$'); legend()
Out[68]:
<matplotlib.legend.Legend at 0x7f9bee5a4890>

¿Quieren cargar una tabla de valores con una columna x y otra y desde un archivo de texto? Usen el siguiente comando de numpy:

In []:
data = loadtxt('nombre del archivo')

Ahora data será un array con dos columnas y N filas. Luego, si queremos definir x e y:

In []:
x = data[:,0]
In []:
y = data[:,1]

En Python todos los vectores y arrays comienzan por el elemento 0. Entonces, estas últimas expresiones indican que x contendrá todos los elementos de la primera columna, mientras que y todos los de la segunda columna.

Luego de todo este trabajo, querremos guardar la figura en un archivo. Para ello, usamos el siguiente comando de matplotlib.pyplot:

In []:
savefig('nombre_archivo.png')

Pueden elegir otra extensión para salvar la figura en otro formato. Lean la documentación de savefig:

In []:
?savefig