Scipy PDF
Scipy PDF
Scipy PDF
Módulo 3
Septiembre de 2014
Cesar Husillos Rodrı́guez (IAA-CSIC) Curso Python Cientı́fico: Scipy Septiembre de 2014 1 / 130
Índice
1 Introducción
2 Búsqueda de mı́nimos
3 Búsqueda de raı́ces
4 Ajuste de curvas
5 Interpolación
6 Integración
7 Estadı́stica y Distribuciones
8 Álgebra lineal
9 Procesamiento de señales
10 Agrupamiento
11 Magnitudes Fı́sicas
Cesar Husillos Rodrı́guez (IAA-CSIC) Curso Python Cientı́fico: Scipy Septiembre de 2014 2 / 130
Introducción
Índice
1 Introducción
2 Búsqueda de mı́nimos
3 Búsqueda de raı́ces
4 Ajuste de curvas
5 Interpolación
6 Integración
7 Estadı́stica y Distribuciones
8 Álgebra lineal
9 Procesamiento de señales
10 Agrupamiento
11 Magnitudes Fı́sicas
Cesar Husillos Rodrı́guez (IAA-CSIC) Curso Python Cientı́fico: Scipy Septiembre de 2014 3 / 130
Introducción
¿Qué es SCIPY?
Cesar Husillos Rodrı́guez (IAA-CSIC) Curso Python Cientı́fico: Scipy Septiembre de 2014 4 / 130
Introducción
subpaquetes SCIPY
Subpaquete Descripción
cluster Algoritmos de clustering
constants Constantes fı́sicas y matemáticas
fftpack Rutinas de Transformadas Rápidas de Fourier
integrate Para integrar y resolver ecuaciones diferenciales ordinarias
interpolate Rutinas de interpolación.
io Entrada y salida (Input/Output)
linalg Álgebra Lineal
maxentropy Métodos de Máxima Entropı́a
ndimage Procesado de imágenes n-dimensionales
odr Ajustes a distancias ortogonales (Orthogonal Distance Regression)
optimize Procedimientos de optimización y búsqueda de ceros en funciones
signal Procesado de señal
sparse Matrices dispersas y rutinas asociadas
spatial Datos con estructura espacial y algorimos
special Funciones especiales
stats Distribuciones estadı́sticas y funciones
weave Integración con C/C++
Cesar Husillos Rodrı́guez (IAA-CSIC) Curso Python Cientı́fico: Scipy Septiembre de 2014 5 / 130
Introducción
Cesar Husillos Rodrı́guez (IAA-CSIC) Curso Python Cientı́fico: Scipy Septiembre de 2014 6 / 130
Búsqueda de mı́nimos
Índice
1 Introducción
2 Búsqueda de mı́nimos
3 Búsqueda de raı́ces
4 Ajuste de curvas
5 Interpolación
6 Integración
7 Estadı́stica y Distribuciones
8 Álgebra lineal
9 Procesamiento de señales
10 Agrupamiento
11 Magnitudes Fı́sicas
Cesar Husillos Rodrı́guez (IAA-CSIC) Curso Python Cientı́fico: Scipy Septiembre de 2014 7 / 130
Búsqueda de mı́nimos
Búsqueda de mı́nimos
scipy.optimize
Cesar Husillos Rodrı́guez (IAA-CSIC) Curso Python Cientı́fico: Scipy Septiembre de 2014 8 / 130
Búsqueda de mı́nimos
Parámetros
minimize
Parámetro Tipo Descripción
fun Función El nombre de una función.
x0 ndarray Punto inicial al partir del se busca el mı́nimo.
args tupla (Opcional) Parámetros extra si los necesitan la fun y sus
derivadas.
method string (Opcional) Método de búsqueda de mı́nimo. Posibles:
’Nelder-Mead’, ’Powell’, ’CG’, ’BFGS’, ’Newton-CG’, ’Anneal’,
’L-BFGS-B’, ’TNC’,’COBYLA’ y ’SLSQP’.
jac Booleano o (Opcional) Si es True se supone que fun devuelve el valor del
función Jacobiano junto al de la función. Si es False, jac se estima
numéricamente. Puede ser una función, en cuyo caso recibe
los mismos parámetros que fun.
hess Función (Opcional) Hessiano de fun. (Sólo para Newton-CG.)
bounds secuencia (Opcional) (Sólo para L-BFGS-B, TNC, COBYLA y SLSQP)
Lı́mites para las variables. Un par
(min|"min"|None, max|"max"|None)
por cada variable de fun.
tol float (Opcional) Tolerancia por debajo de la cual se detienen las
iteraciones.
options dict (Opcional) Las opciones aceptadas por todos los métodos son:
maxiter (int); disp (bool) Si True, info de convergencia.
Cesar Husillos Rodrı́guez (IAA-CSIC) Curso Python Cientı́fico: Scipy Septiembre de 2014 9 / 130
Búsqueda de mı́nimos
Ejemplo 1
Minimización
Ejemplo
# Funcion a m i n i m i z a r
def parabola ( x ):
return x ** 2 + 1
# j a c o b i a n o de la funcion
def p a r a b o l a _ d er iv a d a ( x ):
return 2 * x
Cesar Husillos Rodrı́guez (IAA-CSIC) Curso Python Cientı́fico: Scipy Septiembre de 2014 10 / 130
Búsqueda de mı́nimos
Cesar Husillos Rodrı́guez (IAA-CSIC) Curso Python Cientı́fico: Scipy Septiembre de 2014 11 / 130
Búsqueda de mı́nimos
Método
Broyden-Fletcher-Goldfarb-Shanno
Ejemplo 1
Cesar Husillos Rodrı́guez (IAA-CSIC) Curso Python Cientı́fico: Scipy Septiembre de 2014 12 / 130
Búsqueda de mı́nimos
Algoritmo de Newton-CG
>>> res = minimize ( parabola , 202.34 , method = ’ Newton - CG ’ , \
jac = parabola_derivada , options ={ ’ xtol ’: 1e -8 , ’ disp ’: True })
Optimization terminated successfully .
Current function value : 1.000000
Iterations : 3
Function evaluations : 4
Gradient evaluations : 7
Hessian evaluations : 0
Cesar Husillos Rodrı́guez (IAA-CSIC) Curso Python Cientı́fico: Scipy Septiembre de 2014 13 / 130
Búsqueda de mı́nimos
Minimización
scipy.optimize
Cesar Husillos Rodrı́guez (IAA-CSIC) Curso Python Cientı́fico: Scipy Septiembre de 2014 14 / 130
Búsqueda de mı́nimos
Minimización
scipy.optimize
Coseno amortiguado
−x
f (x) = cos(x) · e π
Cesar Husillos Rodrı́guez (IAA-CSIC) Curso Python Cientı́fico: Scipy Septiembre de 2014 15 / 130
Búsqueda de mı́nimos
Minimización
scipy.optimize. Minimos locales
def c o s _ a m o r t _ d e r i v a d a ( x ):
return -1 * scipy . exp ( - x / scipy . pi ) * \
( scipy . sin ( x ) + scipy . cos ( x ) / scipy . pi )
def c o s _ a m o r t _ d e r i v a d a 2 ( x ):
return scipy . exp ( - x / scipy . pi ) * \
(2 * scipy . sin ( x ) / scipy . pi + \
(( scipy . pi ** -2 - 1) * scipy . cos ( x )))
Cesar Husillos Rodrı́guez (IAA-CSIC) Curso Python Cientı́fico: Scipy Septiembre de 2014 16 / 130
Búsqueda de mı́nimos
Minimización
Mı́nimos locales
Cesar Husillos Rodrı́guez (IAA-CSIC) Curso Python Cientı́fico: Scipy Septiembre de 2014 17 / 130
Búsqueda de mı́nimos
Minimización
Mı́nimos locales
Cesar Husillos Rodrı́guez (IAA-CSIC) Curso Python Cientı́fico: Scipy Septiembre de 2014 18 / 130
Búsqueda de mı́nimos
Minimización
Rango restringido de búsqueda
f (x, y , z) = x 2 + xy + 3z
Minimización
Rango restringido para búsqueda de minimos. Ejemplo
Minimización
Rango restringido para búsqueda de minimos. Ejemplo
Cesar Husillos Rodrı́guez (IAA-CSIC) Curso Python Cientı́fico: Scipy Septiembre de 2014 21 / 130
Búsqueda de mı́nimos
Ejercicios
Ejercicios 1 y 2
http://www.iaa.es/python/cientifico/ejercicios/scipy
Cesar Husillos Rodrı́guez (IAA-CSIC) Curso Python Cientı́fico: Scipy Septiembre de 2014 22 / 130
Búsqueda de raı́ces
Índice
1 Introducción
2 Búsqueda de mı́nimos
3 Búsqueda de raı́ces
4 Ajuste de curvas
5 Interpolación
6 Integración
7 Estadı́stica y Distribuciones
8 Álgebra lineal
9 Procesamiento de señales
10 Agrupamiento
11 Magnitudes Fı́sicas
Cesar Husillos Rodrı́guez (IAA-CSIC) Curso Python Cientı́fico: Scipy Septiembre de 2014 23 / 130
Búsqueda de raı́ces
Búsqueda de raı́ces
(scipy.optimize)
Cesar Husillos Rodrı́guez (IAA-CSIC) Curso Python Cientı́fico: Scipy Septiembre de 2014 24 / 130
Búsqueda de raı́ces
Búsqueda de raı́ces
(scipy.optimize)
Cesar Husillos Rodrı́guez (IAA-CSIC) Curso Python Cientı́fico: Scipy Septiembre de 2014 25 / 130
Búsqueda de raı́ces
Búsqueda de raı́ces
Ecuación escalar
Cesar Husillos Rodrı́guez (IAA-CSIC) Curso Python Cientı́fico: Scipy Septiembre de 2014 26 / 130
Búsqueda de raı́ces
Búsqueda de raı́ces
Ecuación escalar
Cesar Husillos Rodrı́guez (IAA-CSIC) Curso Python Cientı́fico: Scipy Septiembre de 2014 27 / 130
Búsqueda de raı́ces
Búsqueda de raı́ces
Ecuación escalar
>>> res [ ’x ’]
... array ([ -3.14159265 , 0. , 3.14159265])
>>> res [ ’ fun ’]
... array ([ 2.42794333 e -13 , 0.00000000 e +00 , 2.43483352 e -13])
Cesar Husillos Rodrı́guez (IAA-CSIC) Curso Python Cientı́fico: Scipy Septiembre de 2014 28 / 130
Búsqueda de raı́ces
Búsqueda de raı́ces
Ecuación escalar
Cesar Husillos Rodrı́guez (IAA-CSIC) Curso Python Cientı́fico: Scipy Septiembre de 2014 29 / 130
Búsqueda de raı́ces
Búsqueda de raı́ces
Sistema de ecuaciones
y = sin(x)
y = 0,1 · x + 0,3
Cesar Husillos Rodrı́guez (IAA-CSIC) Curso Python Cientı́fico: Scipy Septiembre de 2014 30 / 130
Búsqueda de raı́ces
Búsqueda de raı́ces
Sistema de ecuaciones
Cesar Husillos Rodrı́guez (IAA-CSIC) Curso Python Cientı́fico: Scipy Septiembre de 2014 31 / 130
Búsqueda de raı́ces
Búsqueda de raı́ces
Sistema de ecuaciones
Cesar Husillos Rodrı́guez (IAA-CSIC) Curso Python Cientı́fico: Scipy Septiembre de 2014 32 / 130
Búsqueda de raı́ces
Búsqueda de raı́ces
Sistema de ecuaciones
Dado el sistema
y = sin(x)
y = 0,1 · x + 0,3
Cesar Husillos Rodrı́guez (IAA-CSIC) Curso Python Cientı́fico: Scipy Septiembre de 2014 33 / 130
Búsqueda de raı́ces
Búsqueda de raı́ces
Sistema de ecuaciones
Búsqueda de raı́ces
Ecuación escalar
Cesar Husillos Rodrı́guez (IAA-CSIC) Curso Python Cientı́fico: Scipy Septiembre de 2014 35 / 130
Búsqueda de raı́ces
Ejercicios
Ejercicio 3
http://www.iaa.es/python/cientifico/ejercicios/scipy
Cesar Husillos Rodrı́guez (IAA-CSIC) Curso Python Cientı́fico: Scipy Septiembre de 2014 36 / 130
Ajuste de curvas
Índice
1 Introducción
2 Búsqueda de mı́nimos
3 Búsqueda de raı́ces
4 Ajuste de curvas
5 Interpolación
6 Integración
7 Estadı́stica y Distribuciones
8 Álgebra lineal
9 Procesamiento de señales
10 Agrupamiento
11 Magnitudes Fı́sicas
Cesar Husillos Rodrı́guez (IAA-CSIC) Curso Python Cientı́fico: Scipy Septiembre de 2014 37 / 130
Ajuste de curvas
Ajuste de curvas
scipy.optimize.curve fit
Ajuste de curvas
scipy.optimize.curve fit
Cesar Husillos Rodrı́guez (IAA-CSIC) Curso Python Cientı́fico: Scipy Septiembre de 2014 39 / 130
Ajuste de curvas
Ajuste de curvas
scipy.optimize.curve fit
Cesar Husillos Rodrı́guez (IAA-CSIC) Curso Python Cientı́fico: Scipy Septiembre de 2014 40 / 130
Ajuste de curvas
Ejercicios
Ejercicio 4
http://www.iaa.es/python/cientifico/ejercicios/scipy
Cesar Husillos Rodrı́guez (IAA-CSIC) Curso Python Cientı́fico: Scipy Septiembre de 2014 41 / 130
Interpolación
Índice
1 Introducción
2 Búsqueda de mı́nimos
3 Búsqueda de raı́ces
4 Ajuste de curvas
5 Interpolación
6 Integración
7 Estadı́stica y Distribuciones
8 Álgebra lineal
9 Procesamiento de señales
10 Agrupamiento
11 Magnitudes Fı́sicas
Cesar Husillos Rodrı́guez (IAA-CSIC) Curso Python Cientı́fico: Scipy Septiembre de 2014 42 / 130
Interpolación
Interpolación
scipy.interpolate
Definiciones
“En el subcampo matemático del análisis
numérico, se denomina interpolación a la obtención
de nuevos puntos partiendo del conocimiento de un
conjunto discreto de puntos.”
“En ingenierı́a y algunas ciencias es frecuente
disponer de un cierto número de puntos obtenidos
por muestreo o a partir de un experimento y
pretender construir una función que los ajuste.”
Obtenidas de la Wikipedia (http://es.wikipedia.org/wiki/Interpolación)
Cesar Husillos Rodrı́guez (IAA-CSIC) Curso Python Cientı́fico: Scipy Septiembre de 2014 43 / 130
Interpolación
Interpolación
scipy.interpolate
Cesar Husillos Rodrı́guez (IAA-CSIC) Curso Python Cientı́fico: Scipy Septiembre de 2014 44 / 130
Interpolación
Interpolación
Splines
Cesar Husillos Rodrı́guez (IAA-CSIC) Curso Python Cientı́fico: Scipy Septiembre de 2014 46 / 130
Interpolación
Ejemplo 1
Interpolación-1D: sobre muestra completa
Cesar Husillos Rodrı́guez (IAA-CSIC) Curso Python Cientı́fico: Scipy Septiembre de 2014 47 / 130
Interpolación
Ejemplo 1
Interpolación-1D: sobre muestra completa
Cesar Husillos Rodrı́guez (IAA-CSIC) Curso Python Cientı́fico: Scipy Septiembre de 2014 48 / 130
Interpolación
scipy.interpolate.UnivariateSpline(x, y, w=None,
bbox=[None, None], k=3, s=None)
Parámetro Tipo Descripción
x array Array 1D, ordenados de forma monótona creciente.
y array Array 1D de valores de la variable dependiente. Mismo número de
w array Array 1D de pesos para el ajuste con splines.
Si toma valor None (por defecto), todos los pesos son iguales.
bbox (tupla, (Opcional) Especifica los lı́mites del intervalo a
lista o array) interpolar. Si vale None (por defecto), bbox=[x[0], x[-1]]
k entero (Opcional) Grado de suavizado del spline (≤ 5).
s float (Opcional) Factor de suavizado empleado para elegir el número de
nodos. Dicho número aumenta hasta que la condición de
suavizado se alcanza:
sum((w[i]*(y[i]-s(x[i])))**2,axis=0) <= s
Si vale None (por defecto) s = len(w )
Ejemplo 2
Interpolación-1D: uso de splines
Cesar Husillos Rodrı́guez (IAA-CSIC) Curso Python Cientı́fico: Scipy Septiembre de 2014 50 / 130
Interpolación
Ejemplo2
Interpolación-1D: uso de splines
Cesar Husillos Rodrı́guez (IAA-CSIC) Curso Python Cientı́fico: Scipy Septiembre de 2014 51 / 130
Interpolación
Interpolación
Splines con datos ruidosos
scipy.interpolate.UnivariateSpline(x, y, w=None,
bbox=[None, None], k=3, s=None)
Cesar Husillos Rodrı́guez (IAA-CSIC) Curso Python Cientı́fico: Scipy Septiembre de 2014 52 / 130
Interpolación
Ejemplo 3
Interpolación-1D: uso de splines con datos ruidosos
Ejemplo3
Interpolación-1D: uso de splines con datos ruidosos
Cesar Husillos Rodrı́guez (IAA-CSIC) Curso Python Cientı́fico: Scipy Septiembre de 2014 54 / 130
Interpolación
Interpolación-2D
scipy.interpolate.griddata
scipy.interpolate.griddata(points, values,
xi, method=’linear’, fill value=nan)
Parámetro Tipo Descripción
points array Coordenadas. Array de forma (n, D), o una tupla de ndim arrays.
values array Valores asignados a las coordenadas dadas por points. Dimensión (n, ).
xi array Forma (M, D). Puntos en los que interpolar.
method string (Opcional). Método de interpolación. Valores posibles: nearest, linear o
cubic.
fill value float (Opcional) Valor usado para la región fuera de la zona de interpolación
definida por points.
Si no se da, se toma nan. No tiene efecto para el método nearest.
Devuelve el conjunto de datos interpolados en xi.
Cesar Husillos Rodrı́guez (IAA-CSIC) Curso Python Cientı́fico: Scipy Septiembre de 2014 55 / 130
Interpolación
Ejemplo4
Interpolación-2D
import scipy
from scipy . interpolate import griddata
Cesar Husillos Rodrı́guez (IAA-CSIC) Curso Python Cientı́fico: Scipy Septiembre de 2014 56 / 130
Interpolación
Ejemplo4
Interpolación-2D (Continuación)
# plotting
pyplot . subplot (221)
pyplot . imshow ( func ( grid_x , grid_y ). T , extent =(0 , 10 , 0 , 10) , \
origin = ’ lower ’)
pyplot . plot ( points [: , 0] , points [: , 1] , ’k . ’ , ms =1)
pyplot . title ( ’ Original ’)
pyplot . subplot (222)
pyplot . imshow ( grid_z0 .T , extent =(0 , 10 , 0 , 10) , origin = ’ lower ’)
pyplot . title ( ’ Nearest ’)
pyplot . subplot (223)
pyplot . imshow ( grid_z1 .T , extent =(0 , 10 , 0 , 10) , origin = ’ lower ’)
pyplot . title ( ’ Linear ’)
pyplot . subplot (224)
pyplot . imshow ( grid_z2 .T , extent =(0 , 10 , 0 , 10) , origin = ’ lower ’)
pyplot . title ( ’ Cubic ’)
pyplot . gcf (). s et _ si ze _i n ch es (6 , 6)
pyplot . show ()
Cesar Husillos Rodrı́guez (IAA-CSIC) Curso Python Cientı́fico: Scipy Septiembre de 2014 57 / 130
Interpolación
Ejemplo4
Interpolación-2D (Continuación)
Cesar Husillos Rodrı́guez (IAA-CSIC) Curso Python Cientı́fico: Scipy Septiembre de 2014 58 / 130
Interpolación
Interpolación-2D
scipy.interpolate.SmoothBivariateSpline
scipy.interpolate.SmoothBivariateSpline(x, y,
z, w=None, bbox=[None, None, None, None],
kx=3, ky=3, s=None)
Parámetro Tipo Descripción
x array Coordenadas en x.
y array Coordenadas en y.
z array Coordenadas en z.
w array (Opcional). Secuencia de pesos. Misma dimensión que x, y y z.
bbox float (Opcional) Secuencia de tamaño 4, con los valores que limitan el dominio
de x e y. Valores por defecto:
bbox=[min(x),max(x), min(y),max(y)]
kx entero (Opcional) Grado del spline en x. Por defecto 3.
ky entero (Opcional) Grado del spline en y. Por defecto 3.
s float (Opcional) Valor positivo para el factor de suavizado.
Devuelve la función de interpolación.
Cesar Husillos Rodrı́guez (IAA-CSIC) Curso Python Cientı́fico: Scipy Septiembre de 2014 59 / 130
Interpolación
Ejemplo5
Interpolación-2D con splines
import scipy
from scipy . interpolate import S m o o t h B i v a r i a t e S p l i n e
def func (x , y ):
return ( scipy . sin ( x ) + scipy . cos ( y )) * 10
intvx = scipy . linspace (0 , 10 , 100) # dominio de la grafica
intvy = scipy . linspace (0 , 10 , 200)
points = scipy . random . rand (1000 , 2) * 10 # puntos para i n t e r p o l a r
z = func ( points [: , 0] , points [: , 1])
spline2d = S m o o t h B i v a r i a t e S p l i n e ( points [: , 0] , points [: , 1] , z , \
s =0.01 , kx =4 , ky =4)
Cesar Husillos Rodrı́guez (IAA-CSIC) Curso Python Cientı́fico: Scipy Septiembre de 2014 60 / 130
Interpolación
Ejemplo5
Interpolación-2D con splines (Continuación)
# plotting
pyplot . subplot (121)
pyplot . imshow ( func ( grid_x , grid_y ). T , extent =(0 , 10 , 0 , 10) , \
origin = ’ lower ’)
pyplot . plot ( points [: , 0] , points [: , 1] , ’k . ’ , ms =1)
pyplot . title ( ’ Original ’)
pyplot . subplot (122)
pyplot . imshow ( spline2d ( intvx , intvy ) , extent =(0 , 10 , 0 , 10) , \
origin = ’ lower ’)
pyplot . title ( ’ spline 2 D ’)
pyplot . gcf (). s et _ si ze _i n ch es (6 , 3)
pyplot . show ()
Cesar Husillos Rodrı́guez (IAA-CSIC) Curso Python Cientı́fico: Scipy Septiembre de 2014 61 / 130
Interpolación
Ejemplo5
Interpolación-2D con splines (Continuación)
Cesar Husillos Rodrı́guez (IAA-CSIC) Curso Python Cientı́fico: Scipy Septiembre de 2014 62 / 130
Interpolación
Ejercicios
Ejercicios 5 y 6
http://www.iaa.es/python/cientifico/ejercicios/scipy
Cesar Husillos Rodrı́guez (IAA-CSIC) Curso Python Cientı́fico: Scipy Septiembre de 2014 63 / 130
Integración
Índice
1 Introducción
2 Búsqueda de mı́nimos
3 Búsqueda de raı́ces
4 Ajuste de curvas
5 Interpolación
6 Integración
7 Estadı́stica y Distribuciones
8 Álgebra lineal
9 Procesamiento de señales
10 Agrupamiento
11 Magnitudes Fı́sicas
Cesar Husillos Rodrı́guez (IAA-CSIC) Curso Python Cientı́fico: Scipy Septiembre de 2014 64 / 130
Integración
Integración
scipy.integrate
Cesar Husillos Rodrı́guez (IAA-CSIC) Curso Python Cientı́fico: Scipy Septiembre de 2014 65 / 130
Integración
La función
quad(func, a, b, args=())
sirve para integrar la función func de una variable entre
dos puntos (a y b). args es una tupla con parámetros
adicionales para func.
Los lı́mites de integración pueden ser scipy.inf para
indicar los lı́mites infinitos.
Retorna una tupla:
(valor de la integral, estimación del error absoluto
en el resultado)
Cesar Husillos Rodrı́guez (IAA-CSIC) Curso Python Cientı́fico: Scipy Septiembre de 2014 66 / 130
Integración
Cesar Husillos Rodrı́guez (IAA-CSIC) Curso Python Cientı́fico: Scipy Septiembre de 2014 67 / 130
Integración
Integración
scipy.integrate
Cesar Husillos Rodrı́guez (IAA-CSIC) Curso Python Cientı́fico: Scipy Septiembre de 2014 69 / 130
Integración
Ejemplo5
Integración analı́tica vs. numérica (Continuación)
Cesar Husillos Rodrı́guez (IAA-CSIC) Curso Python Cientı́fico: Scipy Septiembre de 2014 70 / 130
Integración
Integración doble
scipy.integrate.dblquad
La función
dblquad(func, a, b, gfun, hfun, args=())
sirve para integrar una función func de dos variables:
func, es la función a integrar (dependiente de 2 variables)
a y b, son los lı́mites de integración en x (a < b)
gfun, es una función de y , que depende sólo de una variable
(x), que funciona como lı́mite inferior de integración para y .
hfun, es la función que determina el lı́mite superior de
integración para y (de nuevo, como función sólo de x).
args, es una tupla con los parámetros adicionales de la
función func.
Cesar Husillos Rodrı́guez (IAA-CSIC) Curso Python Cientı́fico: Scipy Septiembre de 2014 71 / 130
Integración
Integración doble
scipy.integrate.dblquad
Salida:
Cubo de lado = 1 --> Volumen = (1.0 , 1 . 1 1 0 2 2 3 0 2 4 6 2 5 1 5 6 5 e -14)
Cubo de lado = 2 --> Volumen = (8.0 , 8 . 8 8 1 7 8 4 1 9 70 0 1 2 5 2 e -14)
Cubo de lado = 3 --> Volumen = (27.0 , 2 . 9 9 7 6 0 2 1 6 6 4 8 7 9 2 2 7 e -13)
Cesar Husillos Rodrı́guez (IAA-CSIC) Curso Python Cientı́fico: Scipy Septiembre de 2014 72 / 130
Integración
Integración doble
scipy.integrate.dblquad
Reto
¿Se atreve a obtener el volumen de una esfera?
Cesar Husillos Rodrı́guez (IAA-CSIC) Curso Python Cientı́fico: Scipy Septiembre de 2014 73 / 130
Integración
Integración triple
scipy.integrate.tplquad
La función
scipy.integrate.tplquad(func, a, b, gfun,
hfun, qfun, rfun, args=())
sirve para realizar integrales triples en funciones func de
tres variables (x, y , z):
func, es la función a integrar (dependiente de 3 variables).
a y b, son los lı́mites de integración en x e y (a < b).
gfun, es una función de y , dependiente de x, que funciona como lı́mite inferior de
integración para y .
hfun, lı́mite superior de integración para y .
qfun, superficie(x, y) que funciona como lı́mite inferior para la variable z.
rfun, mismas caracterı́sticas que qfun, pero con funciones de lı́mite superior para la
variable z.
Integración triple
scipy.integrate.tplquad
def integrand (z , y , x ):
return y * np . sin ( x ) + z * np . cos ( x )
Salida
2.0
Cesar Husillos Rodrı́guez (IAA-CSIC) Curso Python Cientı́fico: Scipy Septiembre de 2014 75 / 130
Integración
Ejercicios
Ejercicios 7, 8 y 9
http://www.iaa.es/python/cientifico/ejercicios/scipy
Cesar Husillos Rodrı́guez (IAA-CSIC) Curso Python Cientı́fico: Scipy Septiembre de 2014 76 / 130
Estadı́stica y Distribuciones
Índice
1 Introducción
2 Búsqueda de mı́nimos
3 Búsqueda de raı́ces
4 Ajuste de curvas
5 Interpolación
6 Integración
7 Estadı́stica y Distribuciones
8 Álgebra lineal
9 Procesamiento de señales
10 Agrupamiento
11 Magnitudes Fı́sicas
Cesar Husillos Rodrı́guez (IAA-CSIC) Curso Python Cientı́fico: Scipy Septiembre de 2014 77 / 130
Estadı́stica y Distribuciones
Estadı́stica descriptiva
Valores centrales y medidas de dispersión
Cesar Husillos Rodrı́guez (IAA-CSIC) Curso Python Cientı́fico: Scipy Septiembre de 2014 78 / 130
Estadı́stica y Distribuciones
Distribuciones de probabilidad
scipy.stats
Cesar Husillos Rodrı́guez (IAA-CSIC) Curso Python Cientı́fico: Scipy Septiembre de 2014 79 / 130
Estadı́stica y Distribuciones
Distribuciones de probabilidad
scipy.stats
Cesar Husillos Rodrı́guez (IAA-CSIC) Curso Python Cientı́fico: Scipy Septiembre de 2014 80 / 130
Estadı́stica y Distribuciones
Distribuciones de probabilidad
scipy.stats
Cesar Husillos Rodrı́guez (IAA-CSIC) Curso Python Cientı́fico: Scipy Septiembre de 2014 81 / 130
Estadı́stica y Distribuciones
Distribuciones de probabilidad
scipy.stats
Cesar Husillos Rodrı́guez (IAA-CSIC) Curso Python Cientı́fico: Scipy Septiembre de 2014 82 / 130
Estadı́stica y Distribuciones
Distribuciones de probabilidad
scipy.stats. Funciones Útiles
Cesar Husillos Rodrı́guez (IAA-CSIC) Curso Python Cientı́fico: Scipy Septiembre de 2014 83 / 130
Estadı́stica y Distribuciones
Distribuciones de probabilidad
scipy.stats. Funciones Útiles
Distribuciones de probabilidad
scipy.stats. Funciones Útiles (continuación)
Ejercicios
Ejercicios 10 y 11
http://www.iaa.es/python/cientifico/ejercicios/scipy
Cesar Husillos Rodrı́guez (IAA-CSIC) Curso Python Cientı́fico: Scipy Septiembre de 2014 86 / 130
Álgebra lineal
Índice
1 Introducción
2 Búsqueda de mı́nimos
3 Búsqueda de raı́ces
4 Ajuste de curvas
5 Interpolación
6 Integración
7 Estadı́stica y Distribuciones
8 Álgebra lineal
9 Procesamiento de señales
10 Agrupamiento
11 Magnitudes Fı́sicas
Cesar Husillos Rodrı́guez (IAA-CSIC) Curso Python Cientı́fico: Scipy Septiembre de 2014 87 / 130
Álgebra lineal
Álgebra lineal
scipy.linalg
Cesar Husillos Rodrı́guez (IAA-CSIC) Curso Python Cientı́fico: Scipy Septiembre de 2014 88 / 130
Álgebra lineal
scipy.dot(array1, array2)
Las dimensiones han de ser compatibles.
>>> from scipy import linalg
>>> A = scipy . arange (1 , 7). reshape ((2 ,3))
>>> A . shape
(2 , 3)
>>> b = scipy . ones (3)
>>> b . shape
(3 ,)
>>> b = scipy . array ([ b ])
>>> b . shape
(1 , 3)
>>> prod = scipy . dot (A , b . transpose ())
>>> print prod . T
[[ 6. 15.]]
>>> print prod . shape
(2 , 1)
Cesar Husillos Rodrı́guez (IAA-CSIC) Curso Python Cientı́fico: Scipy Septiembre de 2014 89 / 130
Álgebra lineal
scipy.linalg.inv(ndarray)
Cesar Husillos Rodrı́guez (IAA-CSIC) Curso Python Cientı́fico: Scipy Septiembre de 2014 90 / 130
Álgebra lineal
scipy.linalg.det(ndarray)
Cesar Husillos Rodrı́guez (IAA-CSIC) Curso Python Cientı́fico: Scipy Septiembre de 2014 91 / 130
Álgebra lineal
scipy.linalg.solve(a, b)
Parámetro Tipo Descripción
a array Dimensiones (M, M).
b array Dimensiones (M, ) o (M, N)
Corresponde a la matriz de la ecuación matricial a · x = b.
a·x =b
3x + 2y + z = 1
5x + 3y + 4z = 2
x +y −z =1
Cesar Husillos Rodrı́guez (IAA-CSIC) Curso Python Cientı́fico: Scipy Septiembre de 2014 93 / 130
Álgebra lineal
Autovalores y autovectores
scipy.linalg.
La función
scipy.linalg.eig(A)
realiza la descomposición del array (N x N) dimensional A.
Devuelve una tupla con dos elementos:
Cesar Husillos Rodrı́guez (IAA-CSIC) Curso Python Cientı́fico: Scipy Septiembre de 2014 94 / 130
Álgebra lineal
Autovalores y autovectores
scipy.linalg.
Cesar Husillos Rodrı́guez (IAA-CSIC) Curso Python Cientı́fico: Scipy Septiembre de 2014 95 / 130
Álgebra lineal
Ejercicios
Ejercicio 12
http://www.iaa.es/python/cientifico/ejercicios/scipy
Cesar Husillos Rodrı́guez (IAA-CSIC) Curso Python Cientı́fico: Scipy Septiembre de 2014 96 / 130
Procesamiento de señales
Índice
1 Introducción
2 Búsqueda de mı́nimos
3 Búsqueda de raı́ces
4 Ajuste de curvas
5 Interpolación
6 Integración
7 Estadı́stica y Distribuciones
8 Álgebra lineal
9 Procesamiento de señales
10 Agrupamiento
11 Magnitudes Fı́sicas
Cesar Husillos Rodrı́guez (IAA-CSIC) Curso Python Cientı́fico: Scipy Septiembre de 2014 97 / 130
Procesamiento de señales
Cesar Husillos Rodrı́guez (IAA-CSIC) Curso Python Cientı́fico: Scipy Septiembre de 2014 98 / 130
Procesamiento de señales
Cesar Husillos Rodrı́guez (IAA-CSIC) Curso Python Cientı́fico: Scipy Septiembre de 2014 99 / 130
Procesamiento de señales
Filtros
scipy.signal.wiener
scipy.signal.wiener(im, mysize=None,
noise=None)
Aplica el filtro de wiener a una señal N-dimensional.
Parámetro Tipo Descripción
im array Array N-dimensional.
mysize entero o array (Opcional) Escalar o array N-dimensional que indica el tamaño
de la ventana del filtro en cada dimensión. El número
de elementos de mysize debe ser impar.
noise float (Opcional) La potencia del ruido a emplear (nois-power. Si no
se da (None), se estima como el promedio de la varianza local
de la señal de entrada (im).
Retorna un array de la misma que el de entrada (im)
sobre el que se ha realizado el filtrado.
Cesar Husillos Rodrı́guez (IAA-CSIC) Curso Python Cientı́fico: Scipy Septiembre de 2014 100 / 130
Procesamiento de señales
Filtros
scipy.signal.medfilt
scipy.signal.medfilt(volume,
kernel size=None)
Aplica el filtro
de mediana a una señal N-dimensional (dada por un array).
Parámetro Tipo Descripción
volume array Array N-dimensional.
kernel size entero o array (Opcional) Escalar o array N-dimensional que indica el
tamaño de la ventana del filtro en cada dimensión. El número
de elementos de kernel size debe ser impar.
Por defecto vale 3.
Retorna un array de la misma que el de entrada (im)
sobre el que se ha realizado el filtrado.
Cesar Husillos Rodrı́guez (IAA-CSIC) Curso Python Cientı́fico: Scipy Septiembre de 2014 101 / 130
Procesamiento de señales
Filtros
scipy.signal
Comparamos el trabajo de ambos filtros sobre una señal
que es la superposición de varios armónicos
f (t) = cos(π · t) + 0,5 · sin(2 · π · t + 0,3) + 0,3 · cos(10 · π · t + 0,2) + 0,2 · sin(30 · π · t + 0,7)
Cesar Husillos Rodrı́guez (IAA-CSIC) Curso Python Cientı́fico: Scipy Septiembre de 2014 102 / 130
Procesamiento de señales
Filtros
scipy.signal. Comparando filtros
Cesar Husillos Rodrı́guez (IAA-CSIC) Curso Python Cientı́fico: Scipy Septiembre de 2014 103 / 130
Procesamiento de señales
Filtros
scipy.signal. Comparando filtros:código
Cesar Husillos Rodrı́guez (IAA-CSIC) Curso Python Cientı́fico: Scipy Septiembre de 2014 104 / 130
Procesamiento de señales
Ventanas
scipy.signal
Ventanas
scipy.signal. Ventanas de convolución para suavizado.
Cesar Husillos Rodrı́guez (IAA-CSIC) Curso Python Cientı́fico: Scipy Septiembre de 2014 106 / 130
Procesamiento de señales
Ventanas
scipy.signal. Ventanas de convolución para suavizado: código
Cesar Husillos Rodrı́guez (IAA-CSIC) Curso Python Cientı́fico: Scipy Septiembre de 2014 107 / 130
Procesamiento de señales
Ventanas
scipy.signal
Cesar Husillos Rodrı́guez (IAA-CSIC) Curso Python Cientı́fico: Scipy Septiembre de 2014 108 / 130
Procesamiento de señales
Ventanas
scipy.signal. Ejemplo de código de suavizado
Ejercicios
Ejercicios 13 y 14
http://www.iaa.es/python/cientifico/ejercicios/scipy
Cesar Husillos Rodrı́guez (IAA-CSIC) Curso Python Cientı́fico: Scipy Septiembre de 2014 110 / 130
Agrupamiento
Índice
1 Introducción
2 Búsqueda de mı́nimos
3 Búsqueda de raı́ces
4 Ajuste de curvas
5 Interpolación
6 Integración
7 Estadı́stica y Distribuciones
8 Álgebra lineal
9 Procesamiento de señales
10 Agrupamiento
11 Magnitudes Fı́sicas
Cesar Husillos Rodrı́guez (IAA-CSIC) Curso Python Cientı́fico: Scipy Septiembre de 2014 111 / 130
Agrupamiento
Agrupamiento
Caso práctico
Agrupamiento
scipy.clustering
Cesar Husillos Rodrı́guez (IAA-CSIC) Curso Python Cientı́fico: Scipy Septiembre de 2014 113 / 130
Agrupamiento
Agrupamiento k-means
scipy.clustering.vq
k-means
scipy.clustering.vq.kmeans
Cesar Husillos Rodrı́guez (IAA-CSIC) Curso Python Cientı́fico: Scipy Septiembre de 2014 115 / 130
Agrupamiento
Vector quantization
scipy.clustering.vq.vq
Cesar Husillos Rodrı́guez (IAA-CSIC) Curso Python Cientı́fico: Scipy Septiembre de 2014 116 / 130
Agrupamiento
Ejemplo 1
Agrupamiento por k-means
Cesar Husillos Rodrı́guez (IAA-CSIC) Curso Python Cientı́fico: Scipy Septiembre de 2014 117 / 130
Agrupamiento
Ejemplo 1
Agrupamiento por k-means
Cesar Husillos Rodrı́guez (IAA-CSIC) Curso Python Cientı́fico: Scipy Septiembre de 2014 118 / 130
Agrupamiento
Ejercicios
Ejercicio 15
http://www.iaa.es/python/cientifico/ejercicios/scipy
Cesar Husillos Rodrı́guez (IAA-CSIC) Curso Python Cientı́fico: Scipy Septiembre de 2014 119 / 130
Magnitudes Fı́sicas
Índice
1 Introducción
2 Búsqueda de mı́nimos
3 Búsqueda de raı́ces
4 Ajuste de curvas
5 Interpolación
6 Integración
7 Estadı́stica y Distribuciones
8 Álgebra lineal
9 Procesamiento de señales
10 Agrupamiento
11 Magnitudes Fı́sicas
Cesar Husillos Rodrı́guez (IAA-CSIC) Curso Python Cientı́fico: Scipy Septiembre de 2014 120 / 130
Magnitudes Fı́sicas
Constantes SCIPY
scipy.constants
Cesar Husillos Rodrı́guez (IAA-CSIC) Curso Python Cientı́fico: Scipy Septiembre de 2014 121 / 130
Magnitudes Fı́sicas
Constantes SCIPY
scipy.constants
Cesar Husillos Rodrı́guez (IAA-CSIC) Curso Python Cientı́fico: Scipy Septiembre de 2014 122 / 130
Magnitudes Fı́sicas
Constantes SCIPY
scipy.constants
Cesar Husillos Rodrı́guez (IAA-CSIC) Curso Python Cientı́fico: Scipy Septiembre de 2014 123 / 130
Magnitudes Fı́sicas
Constantes SCIPY
scipy.constants
Cesar Husillos Rodrı́guez (IAA-CSIC) Curso Python Cientı́fico: Scipy Septiembre de 2014 124 / 130
Magnitudes Fı́sicas
Constantes SCIPY
scipy.constants
Cesar Husillos Rodrı́guez (IAA-CSIC) Curso Python Cientı́fico: Scipy Septiembre de 2014 125 / 130
Magnitudes Fı́sicas
Prefijos de unidades
scipy.constants
Cesar Husillos Rodrı́guez (IAA-CSIC) Curso Python Cientı́fico: Scipy Septiembre de 2014 126 / 130
Magnitudes Fı́sicas
Cesar Husillos Rodrı́guez (IAA-CSIC) Curso Python Cientı́fico: Scipy Septiembre de 2014 127 / 130
Magnitudes Fı́sicas
Funciones de conversión
scipy.constants
Cesar Husillos Rodrı́guez (IAA-CSIC) Curso Python Cientı́fico: Scipy Septiembre de 2014 128 / 130
Magnitudes Fı́sicas
Ejercicios
Ejercicio 16
http://www.iaa.es/python/cientifico/ejercicios/scipy
Cesar Husillos Rodrı́guez (IAA-CSIC) Curso Python Cientı́fico: Scipy Septiembre de 2014 129 / 130
Magnitudes Fı́sicas
FIN
Cesar Husillos Rodrı́guez (IAA-CSIC) Curso Python Cientı́fico: Scipy Septiembre de 2014 130 / 130