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
Podemos realizar operaciones básicas de manera sencilla
1+2
3**2
12.0/2.5-4.0/3.0
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:
from numpy import *
Ahora podemos usar todas las funciones asociadas con el paquete numpy
de forma directa:
sqrt(2)
sin(0)
pi
arange(0,1,0.1)
Para conocer algunas de las funciones asociadas a numpy
pueden googlear o acceder a la ayuda interactiva escribiendo en el terminal de IPython:
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:
import numpy as np
np.sqrt(2)
np.sin(0)
np.pi
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
:
from numpy import sin
sin(0.0)
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:
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:
%matplotlib inline
Supongamos que queremos graficar la función sin(x)
, comencemos por definir el dominio para x
:
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)
:
plot(x,sin(x),'-r')
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:
?plot
Podemos agregar nombres a los ejes del siguiente modo:
xlabel(r'$x$'); ylabel(r'$\sin(x)$'); plot(x,sin(x),'-r')
También pueden cambiar el rango de x
e y
:
xlabel(r'$x$'); ylabel(r'$\sin(x)$'); xlim([-3*pi,3*pi]); ylim([-2,2]); plot(x,sin(x),'-r')
o combinar varios gráficos:
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()
¿Quieren cargar una tabla de valores con una columna x
y otra y
desde un archivo de texto? Usen el siguiente comando de numpy
:
data = loadtxt('nombre del archivo')
Ahora data
será un array con dos columnas y N filas. Luego, si queremos definir x
e y
:
x = data[:,0]
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
:
savefig('nombre_archivo.png')
Pueden elegir otra extensión para salvar la figura en otro formato. Lean la documentación de savefig
:
?savefig