viernes, 16 de marzo de 2018

¿Cuánto tiempo tarda un proceso en Python?

Si estamos programando un procedimiento y deseamos conocer cuántos segundos ha tardado en realizarse ponemos incluir unas líneas al principio y otras al final que nos darán la duración total del programa.


#al inicio ponemos las dos siguientes líneas
from datetime import datetime
fecha1=datetime.now()

#al final ponemos las tres siguientes líneas
fecha2=datetime.now()
diferencia=fecha2-fecha1
print(diferencia.seconds, "segundos")

domingo, 4 de marzo de 2018

Regresión polinómica en Python

Utilizando NumPy podemos realizar una regresión polinómica en Python con muy pocas líneas de código.

Disponemos de la variable x

x=[0,1,2,3,4,5,6,7,8,9]

Disponemos de la variable y

y=[8,6,10,20,36,58,86,120,160,206]

En este caso hemos elegido valores de y que se ajustan perfectamente al polinomio de grado 2 siguiente.

3x2-5x+8

Veamos el código.

 #vamos a calcular una regresión polinómica con ayuda de NumPy  
 from numpy import poly1d,polyfit  
 x=[0,1,2,3,4,5,6,7,8,9]  
 y=[8,6,10,20,36,58,86,120,160,206]  
 p = poly1d(polyfit(x, y, deg=2), variable='x')  
 print(p)  



Este es el resultado.


Con valores aleatorios

Ahora vamos a cambiar los valores de la variable y, añadiendo cierta aleatoriedad que hemos obtenido con una distribución normal inversa que usa como media los valores anteriores de la variable y.

y=[7.4,6.1,10,19.6,35.3,56.5,86.3,120,158.2,206.1]


Vemos que ahora el polinomio que obtenemos es diferente al ser distintos los valores de la variable y.


Referencia


La siguiente página es una wiki recomendable para comparar diferentes lenguajes de programación. Os dejo el enlace que trata precisamente el tema de la regresión polinómica.

http://www.rosettacode.org/wiki/Polynomial_regression




sábado, 3 de marzo de 2018

Usar arrays en Python con NumPy

En Python podemos usar un array de una dimensión pero cuando necesitamos usar matrices multidimensionales necesitamos usar NumPy.

En Python una matriz unidimensional, sin llamar a NumPy, puede ser una lista o un array.

miLista=[1,2,3]

o bien, usando array


Importando NumPy

Para un tratamiento matemático de las matrices y vectores se recomienda usar NumPy. Además proporciona tratamiento de matrices multidimensionales.

Comencemos viendo cómo crear un array.

 #Vamos a trabajar con numpy haciendo algunas matrices basicas  
 import numpy as np  
 a = np.array([1, 2, 3])  # Crea un array de una dimensión  
 b = np.array([[1,2,3,4], [5,6,7,8], [9,10,11,12]])  
              # Ha creado un array de 3 dimensiones  
 print(type(a))      # Imprime "<class 'numpy.ndarray'>"  
 print(type(b))      # Imprime "<class 'numpy.ndarray'>"  
 print(a.shape)      # Imprime "(3,)"  
 print(b.shape)      # Imprime "(3,4)"  
 print(a[0], a[1], a[2])  # Imprime "1 2 3"  
 print(b[0],b[1],b[2])   # Imprime "[1 2 3 4] [5 6 7 8] [ 9 10 11 12]"  
 print(b[0,2])       # Imprime 3  
 a[0] = 5         # Cambia un elemento en un array  
 b[2,3]=-1         # Cambia el 12 por un -1  
 print(a)         # Imprime "[5, 2, 3]"  
 print(b)         # Imprime "[1 2 3 4] [5 6 7 8] [ 9 10 11 -1]"  
 c = np.array([[1/2,2,3],[4,5,6]])  # Crea una matriz de dimensión 2  
 print(c.shape)           # Imprime "(2, 3)"  
 print(c[0, 0], c[0, 1], c[1, 0])  # Imprime "0.5 2.0 4.0"  



En el último print se imprimen con coma flotantes los valores porque todos han de ser del mismo tipo, y hemos realizado una división.

Veamos ahora otro ejemplo donde únicamente importamos las funciones de NumPy que nos interesan.


 # continuamos con arrays en Python  
 from numpy import log, sin, cos, array  
 a=[log(1),1,2,3,4,5,6,7,8,9]  # creamos una lista  
 b=array(a)         # convertimos la lista en un array  
 print('la variable a es de tipo',type(a),' y es:')  
 print(a)  
 print('la variable b es de tipo',type(b),' y es:')  
 print(b)