Archivos de Categoría: Python

Maraton de screencast para Web2py

Hace algún tiempo he estado trabajando con Web2py, un framework web basado en Python. Creo que sería interesante realizar algunos screencast. El contenido sería mas bien práctico, desde lo básico hasta llegar al funcionamiento con un servidor propio o GAE.

La ventaja de Web2py es que no necesita ser instalado, es multiplataforma, emplea el modelo vista controlador (MVC para los regalones) y posee uno de los mejores sistemas de autentificación que he visto. Por supuesto que ofrece compatibilidad con los teléfonos móviles. Las otras funcionalidades son conocidas, sin embargo, mas de alguna grata sorpresa ofrece este ambiente de desarrollo (sí, tambien tiene un entorno de desarrollo).

Espero empezar a generar contenido entonces y devolverle la mano a los lectores.

Revisar listas inversamente en Python

Cuando se desea revisar una lista, digamos en orden decreciente, se puede utilizar el comando “reversed”. Este comando toma el orden convencional y lo invierte. Por ejemplo, en el video considero dos formas de hacerlo, la normal con listas y con “xrange”. A esta última le agrego la opción de iniciar en un índice particular:

Video

 

Ajustar puntos a un polinomio mediante mínimos cuadrados con Python (Numpy)

Cuando se tiene un conjunto de coordenadas (normalmente adquiridos por mediciones en intervalos), en ocasiones se requiere trazar una curva que no necesariamente pase por tales puntos, mas bien que se ajusten a ellos con un determinado criterio. En este caso el criterio de mínimos cuadrados.

Python cuenta con un módulo matemático denominado numpy, el cual permite entre otras cosas obtener el polinomio de grado n, que mejor se ajuste a los datos. Lo que hace esta función, es obtener los coeficientes del polinomio, es decir:

Dado el polinomio:  ax**n + bx**n-1 + … + yx + z

Lo que se obtiene son los coeficientes: a,b,c,d,…,z

Posteriormente, se puede evaluar el polinomio con elementos dentro del intervalo original.

Para ello:

 from numpy import polyval, polyfit
 gradosPolinomio = 10

 #Con x e y correspondientes a una lista Python de los datos de entrada.

 coeficientes = polyfit(x, y, gradosPolinomio) #Obtener coeficientes del polinomio.

Luego se puede evaluar el polinomio con polyval:

#Donde valor es cualquier elemento del dominio.
y = polyval(coeficientes, valor)

Convertir Array de flotantes en enteros usando Numpy

Este proceso se puede hacer como sigue:

>>> c=numpy.random.normal(0,3,(4,4))
>>> c
array([[-1.87205053,  0.69237245, -3.07282833,  3.8650275 ],
       [ 1.65334856,  2.51737029, -1.90287106, -5.04961735],
       [-3.27043344,  3.20271454,  4.15238642,  1.74146052],
       [ 2.9037961 , -9.0837848 , -1.19839749, -1.84119043]])
>>> c=numpy.array(c,int)
>>> c
array([[-1,  0, -3,  3],
       [ 1,  2, -1, -5],
       [-3,  3,  4,  1],
       [ 2, -9, -1, -1]])

Donde los argumentos de numpy.random.normal(0,3,(4,4)), corresponden a la media, desviación estándar y tamaño de la matriz respectivamente. Si además se quieren obtener sólo enteros positivos, entonces:

abs(c)