Sunteți pe pagina 1din 12

GUA RPIDA DE PYTHON

Con ejemplos de modelacin matemtica

Dada la versatilidad de Python se decidi incorporarlo como herramienta de programacin a los cursos de modelacin matemtica en la Facultad de Estudios Ambientales y Rurales de la Pontificia Universidad Javeriana parta estudiantes de pregrado y postgrado. Hay mucha informacin disponible en Internet sobre Python, sin embargo esta Gua Rpida se est escribiendo a medida que asimilamos el lenguaje de programacin, as que se espera sea la va ms expedita para comenzar a escribir programas tiles.

Efran Antonio Domnguez Calle 20/04/2010

20-4-2010

GUA RPIDA DE PYTHON


Con ejemplos de modelacin matemtica

INTRODUCCIN
Ya vendr este texto, lo dejo para el final.

DONDE OBTENERLO Y CMO INSTALAR PYTHON


Aqu describo de donde sacar el instalador de Python y que hay que hacer para instalarlo. Me disculpo del mundo de Linux, pero por el momento slo voy a describir cmo hacerlo para los sistemas operativos de MS Windows, yo mismo no uso Linux, espero hacerlo con agilidad en un futuro cercano, por ahora todo estar orientado al sistema operativo que muchos odian pero que todos usan y eso incluye a todos los usuarios de Linux. Cmo todos saben Python es un sistema de programacin interpretado multiplataforma, as que se puede utilizar en diferentes sistemas operativos, MS Windows, Linux, Leopard, Solaris, OS. El sitio oficial de Python es http://www.python.org, cmo es lgico este sitio de Internet es el lugar ideal para obtener el interpretador de Python. Antes de hacerlo es necesario revisar que contiene una instalacin de Python. En una instalacin completa de Python debe estar el interpretador del lenguaje y las bibliotecas/libreras que el programador utiliza muy frecuentemente. En Python, las bibliotecas ms utilizadas son IPython, Scypy, Numpy, Matplotlib, Chaco, Mayavi y muy seguramente habr algunas que se encargan de mantener el trabajo integrado de todas las anteriores con el Interpretador. De todas las mencionadas, el Interpretador es lo que siempre debe estar instalado, sin l todo lo dems no tiene sentido ya que es l quien ejecuta los programas escritos en Python. Una forma de instalar Python consiste en ir a la pgina oficial de Python y siguiendo las instrucciones bajar uno por uno cada componente, empezando por el interpretador. Otra forma ms rpida de hacerlo es descargando una compilacin de terceros y en este caso mi recomendada es la de Enthought que se puede bajar desde la pgina de Internet http://www.enthought.com/products/getepd.php. La compilacin acadmica es gratuita y muy fcil de instalar, slo es necesario ejecutar el archivo descargado y seguir las instrucciones de cada ventana. Esta distribucin instala de forma automtica IPython, Scypy, Numpy, Matplotlib, Chaco, Mayavi, etc.

CMO USAR PYTHON


La forma ms sencilla de usar Python es utilizarlo en modo interactivo. Se ejecuta la aplicacin PyLab (IPython). En la lnea de comandos de esta ventana interactiva se pueden dar instrucciones al Interprete de Python. Por ejemplo:

20-4-2010 In [15] A=10 Out [15] A=10 In [16] B=20 Out [16] B=20 In [17] C=A+B Out [17] C=30 In [18] a=3 Out [18] a=3 Nota: Python es sensible a maysculas en los nombres de las variables, en este ejemplo .

TIPOS DE DATOS EN PYTHON


NUMRICOS
En Python existen todos los tipos de datos que se consideran bsicos en cualquier lenguaje de programacin. Entre los datos numricos encontramos los nmeros enteros y los reales y tambin hay nmeros complejos. Los nmeros enteros se representan con la palabra clave int, en una versin de mayor precisin con la palabra Long (Entero Largo), mientras que los reales se declaran con la palabra clave float. Los nmeros enteros se representan utilizando los nmeros en el rango de -231 a 231 -1 en plataformas de 32 bits.

SIMBLICOS
Entre los datos simblicos estn las cadenas de caracteres que se representan como sucesin de smbolos contenidos entre comillas dobles o comillas simples. Por ejemplo: Nombre1=Juan Acosta Nombre2=Martha Pazo Son cadenas de caracteres. La longitud de la cadena de caracteres slo est restringida por la cantidad de memoria RAM disponible en el computador. Una cadena que se encierra entre comillas triples, sean estas dobles o sencillas, representan una cadena de caracteres que se escribe en ms de una lnea del editor de texto. Por ejemplo: CadenaLarga1= Este es el ejemplo de una cadena muy larga Que se escribe en ms de una lnea del editor de texto este uso tripletas de comillas dobles CadenaLarga2= Este es el ejemplo de una cadena muy larga Que se escribe en ms de una lnea del editor de texto este uso tripletas de comillas simples

20-4-2010 Este tipo de cadenas es cmodo para editar programas de modo que se lean fcilmente.

SECUENCIAS EN PYTHON
Las secuencias en Python son una coleccin de objetos que puede ser incluso de distinto tipo. Entre las secuencias se encuentran las listas (Lists), las Tuplas y los Arreglos (Arrays).

LISTAS EN PYTHON
Las listas se definen como una coleccin de valores entre parntesis cuadrados por ejemplo:

MiLista=[1,a,3]

Las listas pueden ser multidimensionales, o lo que es lo mismo una lista unidimensional puede embeber elementos que son listas:

OtraLista= [1,[a,b,c],3]

Para acceder al elemento de una lista basta con acceder a l a travs del nombre de la lista y el ndice del elemento, por ejemplo:

w=OtraLista[0]

En este caso w ser igual a 1. Hay que recordar que el primer elemento de una lista tiene el ndice 0. La instruccin w=OtraLista[1] devolver que w=[a,b,c], esto dado que el segundo elemento (con ndice 1) es una lista embebida. Si se desea acceder a un elemento de una lista embebida despus del ndice que seala al elemento que es la lista embebida se seala en corchetes cuadrados el ndice del elemento de esa lista que es necesario devolver:

W= OtraLista[1][2] asigna a w el valor de c.

20-4-2010

TUPLAS EN PYTHON ARREGLOS EN PYTHON


Los arreglos en Python se definen con la funcin array(). Estos pueden ser multidimensionales, pero obligatoriamente son del mismo tipo. La instruccin:

q=array([[1,2],[3,4],[5,6]])

Crea una matriz de tres filas con dos columnas y de tipo entero. La instruccin

q=array([[1,2],[3,4],[5,wok]])

Tambin crea una matriz de tres filas con dos columnas pero de tipo simblico string. Un arreglo tridimensional se podra definir como: x=array([[[1,2,3],[4,5,6],[7,8,9]],[[10,11,12],[13,14,15],[16,17,18]]]). Como resultado de este comando al interrogar el contenido de x se obtiene: array([[[ 1, 2, 3], [ 4, 5, 6], [ 7, 8, 9]], [[10, 11, 12], [13, 14, 15], [16, 17, 18]]]) Este arreglo de tres dimensiones puede tratarse cmo un arreglo unidimensional que contiene como elementos arreglos bidimensionales. Para determinar la estructura de un arreglo determinado se utiliza el comando shape. En el caso anterior el comando x.shape regresar la tupla: (2,3,3). Para definir un arreglo que contenga cmo elementos los nmeros de un intervalo concreto se puede usar el comando arange(inicio, fin, paso). Por ejemplo, si se desea crear un arreglo unidimensional que contenga cmo elementos los nmeros del -p a p con un paso de avance de 0.0001 se usa: x=arange(-2,2,0.1) Que regresa cmo resultado:
array([ -2.00000000e+00, -1.90000000e+00, -1.80000000e+00, -1.70000000e+00, -1.60000000e+00, -1.50000000e+00,

20-4-2010
-1.40000000e+00, -1.30000000e+00, -1.20000000e+00, -1.10000000e+00, -1.00000000e+00, -9.00000000e-01, -8.00000000e-01, -7.00000000e-01, -6.00000000e-01, -5.00000000e-01, -4.00000000e-01, -3.00000000e-01, -2.00000000e-01, -1.00000000e-01, 1.77635684e-15, 1.00000000e-01, 2.00000000e-01, 3.00000000e-01, 4.00000000e-01, 5.00000000e-01, 6.00000000e-01, 7.00000000e-01, 8.00000000e-01, 9.00000000e-01, 1.00000000e+00, 1.10000000e+00, 1.20000000e+00, 1.30000000e+00, 1.40000000e+00, 1.50000000e+00, 1.60000000e+00, 1.70000000e+00, 1.80000000e+00, 1.90000000e+00])

Ntese que el arreglo obtenido es un espacio semi-abierto que no contiene el valor de 2. El intervalo creado nunca contiene al valor definido por el argumento fin. El tipo de dato del arreglo se puede especificar directamente desde el comando arange. Si este no se especfica explcitamente, el tipo de dato es asignado por el interpretador cmo el ms complejo de los tipos presentados entre los argumentos pasados al comando arange. Por ejemplo, en forma explcita: x=arange(0, 10, 1, float) que regresa: array([ 0., 1., 2., 3., 4., 5., 6., 7., 8., 9.]) Se debe notar que todos los elementos tienen punto decimal indicando que estos son de tipo real. El comando: x=arange(0, 5, 0.1) tambin regresa un arreglo con nmeros reales dado que el paso para el rango es igual a 0.1, de all el interprete de Python concluye que el arreglo a devolver es de nmeros reale. El comando x=arange(0, 5, 1) regresar un arreglo x que contiene como elementos nmeros enteros ya que ese es el tipo que el interpretador deduce al encontrar que todos los argumentos con los que se llama a esta funcin son enteros. Algo un poco incmodo en la funcin arrange() es que siempre devuelve un arreglo unidimensional, sin embargo otra utilidad de la funcin shape es que permite reorganizar la estructura del un arreglo. Como ejemplo se puede definir el arreglo x=arange(1,21) que contiene los nmeros del 1 al 20 que regresa el arreglo unidimensional: array([ 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20]) Este arreglo puede redimensionarse a una matriz de de dos filas por diez columnas (2x10) as: x.shape=(4,5) de modo que si se interroga x se obtiene la siguiente matriz: array([[ 1, 2, 3, 4, 5], [ 6, 7, 8, 9, 10], [11, 12, 13, 14, 15],

20-4-2010 [16, 17, 18, 19, 20]]) Otras funciones que sirven para generara vectores unidimensionales son range(inicio, fin, paso) y linspace(inicio, fin, numdat). Range funciona de forma similar a arange(), con la diferencia de que siempre devuelve listas y no arreglos. La funcin linspace() regresa arreglos y se diferencia de arange en que numdat es el nmero de datos requeridos en el intervalo cerrado [inicio, fin], con fin incluido en l. Tambin, si esto fuera necesario, x se podra reconfigurar con ms dimensiones. Para el caso de tres dimensiones se tendra el comando: x.shape=(5,2,2). Lo que regresara el arreglo: array([[[ 1, 2], [ 3, 4]], [[ 5, 6], [ 7, 8]], [[ 9, 10], [11, 12]], [[13, 14], [15, 16]], [[17, 18], [19, 20]]])

COMO LEER INFORMACIN DE ARCHIVOS


ARCHIVOS DE TEXTO
Utilizando arreglos numpy se puede aplicar el mtodo numpy.loadtxt para leer archivos de texto que contengan el mismo nmero de columnas en cada fila. Para guardar se utiliza el mtodo numpy.savetxt. Para leer una matriz desde un archivo de texto

x=np.loadtxt("logistica.txt") # la matriz se carga en el arreglo x, # todas las filas de x deben tener el mismo nmero de columnas

ARCHIVOS DE EXCEL
Para leer archivos de Excel se utiliza la funcin xlrd, esta se puede descargar de http://www.python-excel.org/: import xlrd

20-4-2010 wb = xlrd.open_workbook('myworkbook.xls')

COMO GUARDAR INFORMACIN EN ARCHIVOS


GUARDAR EN ARCHIVOS DE TEXTO
Para guardar informacin en archivos de texto plano se utiliza la funcin:

savetxt(fname, x, formato='%.18e', delimitador=' ')

Donde: fname es una cadena de caracteres que contiene el nombre completo del archivo de texto en el que se guardan los datos, fmt es una cadena de caracteres con el formato de nmero en que se guardan los datos explicitado por la letra e si es formato cientfico y f si son nmeros reales con un nmero fijo de lugares decimales despus de la coma. A su vez delimitador contiene el smbolo que se utiliza para separar las cifras entre s. Vase el siguiente ejemplo: # coding: latin-1 # Se tienen los vectores t y x para ser guardados en un archivo # ubicando t en la primera columna y con x en la segunda from pylab import * dt=0.01 t = arange(0,10,dt) x=10*sin(pi*t) # Se organiza una matriz de n datos por dos columnas y se le denomina # datos, se crea llena de ceros y con el mismo nmero de filas que # t y dos columnas # size(t) determina el nmero de elementos del vector t. Este # constituye el nmero de filas del arreglo datos datos = zeros((size(t),2)) # Se rellena la primera columna de datos con el vector t datos[:,0] = t # Se rellena la primera columna de datos con el vector x datos[:,1] = x # En fname se guarda el nombre del archivo de datos fname = 'misdatos.txt' # Se guarda el arreglo datos y omitimos el delimitador savetxt(fname, datos, fmt='%.4f')

20-4-2010 Si se copia el texto anterior al editor SciTE, y lo guardamos como guardar.py al ejecutarlo debe crearse el archivo misdatos.txt en la misma carpeta donde este guardo el programa.

Los datos guardados se pueden leer con cualquier editor de texto e incluso pueden ser importados a tablas electrnicas.

Al abrir el archivo misdatos.txt se obtiene:

Figura 1. Visualizacin de los datos guardados

COMANDOS IMPORTANTES
1) Para cambiar la combinacin de color de fondo, color de escritura y colores de IPython %colors LightBG POSIBLES VALORES: NoColor, Linux, LightBG.

20-4-2010 2) Cambiar a un directorio de trabajo In [15] cd g:\pyedoc 3) Limpiar pantalla In [15] cls 4) Para visualizar el contenido del directorio actual In [15] ls 5) Para leer una matriz desde un archivo de texto

X = np.loadtxt("logistica.txt") # la matriz se carga en el arreglo x, # todas las filas de x deben tener el mismo nmero de columnas

GRFICAS 3D
Para construir graficas 3D interactivas se requiere tres vectores x, y, z y las bibliotecas:

import numpy from enthought.mayavi.mlab import *

De este modo se habilitan varios tipos de grficos 3D implementados en la biblioteca mayavi, esta ltima queda habilitada con la instalacin de Enthought Python Distribution. Un ejemplo de grficos 3D es el que se puede obtener con plot3D, si se utiliza la siguiente secuencia de comandos:

#!/usr/bin/env python # python import numpy from pylab import * from enthought.mayavi.mlab import * x=linspace(-100*pi,100*pi, 1000) y=100*sin(pi*x) z=100*cos(pi*x) plot3d(x, y, z, arange(1000,2000), tube_radius=5, colormap='Spectral')

Si todo sale bien se obtiene una ventana interactiva de Mayavi con la siguiente imagen:

20-4-2010

Figura 2. Figura en 3D en Mayavi

Mayavi es interactivo, as que este cuerpo se puede rotar arrastrando con el ratn al mantener el botn izquierdo oprimido. Para mas referencias visite la pgina de Mayavi.

ENLACES IMPORTANTES:
Sitio web oficial de Python Http://www.python.org Descripcin de la biblioteca ScyPy http://www.scipy.org/more_about_SciPy Descripcin de la biblioteca NumPy http://numpy.scipy.org/ Recetas de programacin numrica en Python http://www.scipy.org/Cookbook Recetas de programacin grfica con Matplotlib http://www.scipy.org/Cookbook/Matplotlib

10

20-4-2010 Biblioteca/Mdulo para series de tiempo en Python http://pytseries.sourceforge.net/contents.html Pgina comparativa NumPy vs. MatLab http://www.scipy.org/NumPy_for_Matlab_Users Handbook of the Physics Computing Course http://pentangle.net/python/handbook/ Entornos de desarrollo para Python http://wiki.python.org/moin/IntegratedDevelopmentEnvironments Gua para utilizar texto LaTex para escribir ecuaciones en los ejes y ttulos de las figuras creadas con Matplotlib http://matplotlib.sourceforge.net/users/mathtext.html Pgina para Mayavi http://code.enthought.com/projects/mayavi/docs/development/html/mayavi/index.html

11

S-ar putea să vă placă și