Está en la página 1de 54

Python + Ciencia =

Juan Luis Cano, @Pybonacci


Madrid, 2013-11-23
PyConES 2013

Y este quin es?

Casi ingeniero aeronutico

Fortran 90 (77?) y Exce (!)

Herramientas privativas

...conseguidas de manera ilegtima



Respuesta: Python!

E inicio !e una "ran a#ista!

Python por rustraci!n


cuenta propia

"nvierno #$%%:
Python $a!ri!

Resultado: Py%onacci

Co#ien&os'
Dividing & merging
&oto: 'ina Regine ((()*+),-)

199(' )u#eric

.im Hugunin (/"0) et al

123eto array 2sico

4yt5on como
5erramienta para
c*cuo cient+,co

199-' Travis meets Python

0ravis 6. 1lip5ant (/ayo


(linic7 /innesota)

,e enamora de 4yt5on y
a2andona /-08-*

9sa :umeric para crear lo


;ue ser SciPy en #$$%

2001' .na o!isea /ythonica

0. 1lip5ant7 4earu
4eterson y 6ric
.ones li2eran SciPy

&ernando 4<re=
inicia 0Python

.o5n Hunter > crea


#at/oti%

2003' E cis#a' nu#array

1i#itaciones de
:umeric

4erry ?reen@eld y otros


crean nu#array

/e3oras... y deectos

(onusi!n: cul usar?



2002
:umeric A numarray A 0ravis 1lip5antB C
)u#Py
Dividing & merging
B+ muc5os ms

Presente'
NumPy,
SciPy
y ms all
&oto: /arcingietorigie ((()*+),-)

)u#Py

3rrays #uti!i#ensionaes

&unciones rpidas y e@cientes para operar con


ellos

1tros: lge2ra lineal7 &&0s7 nDmeros aleatorios7


unciones @nancieras

/otivaci!n: Emake [Python] euivalent to a !asic


scienti"c calculatorF

3rrays
>>> import numpy as np
>>> np.array([
... [1, 2, 3],
... [4, 5, 6]
... ])
array([[1, 2, 3],
[4, 5, 6]])

Universal functions
>>> a = np.arange(6).reshape(2, 3)
>>> np.sin(a)
array([[ 0. , 0.8415, 0.9093],
[ 0.1411, 0.!568, 0.9589]])

4enta5as

'atos 5omog<neos y dimensiones @3as: almacenamiento en


memoria e,ciente

8os 2ucles en 4yt5on son lentos: 6ectori&aci7n

1peraciones so2re los datos en 2lo;ue: ex/ansi7n (!roadcasting)



#at/oti%

6l estndar de #acto para 6isuai&aci7n con 4yt5on

*asado en la -4" de /-08-*

?r@cas de alta calidad ($u!lication%uality)

&undamentalmente para #'



4isuai&aci7n r*/i!a
>>> import matplotlib.pyp"ot as p"t
>>> # = np."inspa$e(0, 10)
>>> p"t.plot(np.sin(#))
[%matp"ot"i&."ines.'ine2( o&)e$t at
0#!*210!$aa9+0>]
>>> p"t.sho,()

4isuai&aci7n r*/i!a
>>> import matplotlib.pyp"ot as p"t
>>> # = np."inspa$e(0, 10)
>>> p"t.p"ot(np.sin(#))
[%matp"ot"i&."ines.'ine2( o&)e$t at
0#!*210!$aa9+0>]
>>> p"t.sho,()

Por qu 8no9 #at/oti%?

&amiliar para los usuarios de /-08-*

...5orri2le para los usuarios de R

4otente: todo se puede personali=ar

...pero a veces es un poco lo&%level

,u@ciente para el GH I de los casos

4ara el otro H I: /ayavi7 *oJe57 ggplot7 Kincent...



SciPy

(olecci!n de algoritmos para tareas comunes

"ntegraci!n y 6'1s (s$ipy.integrate)

4rocesamiento de seLales (s$ipy.signa")

&unciones especiales (s$ipy.spe$ia")

1ptimi=aci!n (s$ipy.optimi-e)

"nterpolaci!n (s$ipy.interpo"ate)

...y ms!

Para tareas %*sicas:::

:::y no tan %*sicas
'entro vdeo!
5ttp:MMyoutu.2eMNOP:g:KOdt/

;<asta e in,nito:::

:::y #*s a*=

>onus' Sy#Py

:um4y: clculo num<rico


>>> np.s.rt(8)
2.82842!124!461903

Sy#Py' c*cuo si#%7ico


>>> *rom sympy import s.rt
>>> s.rt(8)
2/s.rt(2)

.n C3S en Python

,istema de lge2ra computacional ((-,) estilo


/aple7 /at5ematica o /aQima

6scrito en 4yt5on puro

"nt<rprete online: 5ttp:MMlive.sympy.orgM

,oporte para 8a0eR



0Python'
'a revoluci(n
OeystoneMHulton -rc5ive7 ?etty "mages

0Python

1riginalmente )nteractive Python: intr/rete !e


Python #e5ora!o

"niciado por &ernando 4<re= en #$$% inspirado en


/at5ematica

'iciem2re #$%%: "4yt5on $.%%7 note2ooJ con intera=


Se2
'entro demo!

:::y e"7 e !inero

'iciem2re #$%#: ?1:1($ de la undaci!n -lred 4.


,loan

6Qpansi!n signi@cativa de "4yt5on y su intera=


note2ooJ

-gosto #$%T: 0Python 1:0 y ?100@ de /icrosot



Por qu es tan incre+%e?

(omunicaci!n de i!eas mediante c7!i"o

Ciencia a%ierta

6ntorno interactivo ideal para el aprendi=a3e



Python 6s $3A13>'
*David contra +oliat,
&oto: ?

E statu quo
E-he most dangerous enemy o# a !etter
solution is an e.isting code!ase that is /ust
good enough0F
U6ric ,. Raymond.

E statu quo
E-he most dangerous enemy o# a better
solution is an existing codebase that is /ust
good enough0F
U6ric ,. Raymond.
M
A
T
L
A
B
P
y
t
h
o
n

E statu quo

6n la industria y en el mundo acad<mico 5ay


inercias

*Desde d(nde tiene ue em$e1ar el cam!io,

:o siempre es posi2le o desea2le: c!digo legado7


eQperiencia

;Pero Python es #e5or=

(oste de licencia: ?0:0

SoBtCare i%re: puedo estudiarlo y compartirlo

Commercial%#riendly: no copylet

:::ta#%in tcnicamente #e5or
o$ta0e11> a = [1]
a = 1
o$ta0e12> a(1)
ans = 1
o$ta0e13> a(1, 1, 1)
ans = 1
>>> a = np.array([1])2 a
array([1])
>>> a[0]
1
>>> a[0, 0, 0]
IndexError: too many indices

SotBCare i%re (otra ve=): los allos son pD2licos

8engua3e ms s!lido y consistente


(tam2i<n conocido como: /-08-* V-0)

:::ta#%in tcnicamente #e5or
o$ta0e11> a = [1]
a = 1
o$ta0e12> a(1)
ans = 1
o$ta0e13> a(1, 1, 1)
ans = 1
>>> a = np.array([1])2 a
array([1])
>>> a[0]
1
>>> a[0, 0, 0]
IndexError: too many indices

SotBCare i%re (otra ve=): los allos son pD2licos

8engua3e ms s!lido y consistente


(tam2i<n conocido como: /-08-* V-0)

Python FAD=

8a gente est pidiendo intera= note2ooJ para


/-08-*!

6l desarrollo del ecosistema 4yt5on es


6erti"inoso

-ctualmente est por delante en aprendi=a3e


automtico7 tratamiento de datos...

)os est*s ocutan!o a"o?

Puntos !%ies'
-oo #e& are li#ting
too many
&oto: Helge WverXs ((()*+)

Python 2 Python 3

(am2io de versiones: horror!

4yt5on T.$ en diciem2re de #$$N7 y aun as:



Python 2 Python 3

,e cometieron errores ;ue se estn solucionando


a5ora (#$%T)

(lave: !esterrar 2to37 c7!i"o Enico para am2as


versiones

6l ecosistema est listo: migremos!



Python es #*s::: 6er%orreico

6l inicio de un programa 4yt5on suele ser as:


import n3mpy as np
*rom n3mpy import $os, sin, tan, [4]
import matp"ot"i&
import matp"ot"i&.pyp"ot as p"t
*rom s$ipy import integrate, optimi-e
import os
import re
...

4ara sesiones interactivas es muy inc!modo



3"unas con inicios !e souci7n

9so de memoria: 2 / a 5 3 / & necesita tres


arrays inter#e!ios
,oluci!n: numeQpr7 num2a7 otros?

'i@cultad de instaaci7n uera de 8inuQ (e.g. VindoSs)


,oluci!n: distri2uciones como (anopy o -naconda

&alta de interBaces "r*,cas para aplicaciones


ingenieriles
,oluci!n: ,imulinJ en 4yt5on7 alguien?

Too few are lifting too many

Futuro'
*Dominaci(n
mundial,
&oto: (arl 8ender ((()*+)

-hese days, tools #or almost every aspect o# scienti"c
com$uting are readily availa!le in Python0
[000] a sur$rising num!er o# Python%!ased tools are
no& best-in-class 2or close to it3 in terms o# sco$e and
ease o# use4and, in virtue o# C !indings, o#ten even in
terms o# $er#ormance
05e 5omogeni=ation o scienti@c computing7 or S5y
4yt5on is steadily eating ot5er languagesY lunc5

No&adays Python is probably the programming
language of choice 2!esides 53 #or data scientists #or
$rototy$ing, visuali1ation, and running data analyses
on small and medium si1ed data sets0
HoS 4yt5on 2ecame t5e language o c5oice or
data science

;.n Buturo %riante=

,ci4y: 5o3a de ruta para %.$

"4yt5on: plan de desarrollo repleto de novedades

:uevos sciJits emergen y los eQistentes me3oran

,e empie=a a implantar como opci!n en las


universidades espaLolas

Soo una "r*,ca #*s

Concusiones
&oto: ,ZVerner ((()*+),-)

Python crece

6l camino 5a sido arduo7 pero el ecosistema est


maduro

4yt5on se est eQpandiendo

4ero 5ay inercias diciles de vencer

'e2emos poner cuidado en algunas reas:


contri2uciones de c!digo y migraci!n a 4yt5on T

4odemos dominar el mundo :)



Pre"untas?

;$uchas "racias= '9
5ttp:MMpy2onacci.Sordpress.com
[4y2onacci

También podría gustarte