2. Cálculo científico El científico necesita: -Obtener datos -Manipularlos y procesarlos -Visualizar los resultados (y entenderlos!!!)
3. Cálculo científico, ¿Por qué python? Python ya tiene muchos ladrillos para construir la casa (no hay que reinventar) Es algo fácil de aprender Se necesita código eficiente que ejecute rápido Con un solo lenguaje se puede hacer prácticamente todo FLOSS!!!!! (*) (*) Free/Libre and Open Source Software
6. Numpy Numpy amplía las capacidades de python Calculadora muy eficiente. Básicamente, nos permite disponer de un nuevo contenedor que es un objeto array multidimensional. Además dispone de una serie de rutinas que amplían las capacidades permitiendo hacer operaciones rápidas sobre los arrays, reformatearlos, estadística muy básica,...
8. Numpy Vectorización, permite no usar bucles, índices,..., de forma explícita (eso sucede entre bambalinas) Menos líneas de código Más fácil de leer El código se parece más a notación matemática El código es más ‘pythónico’
9. Numpy Broadcasting, las operaciones son elemento a elemento (hay que ver las reglas de broadcasting de numpy con cuidado para entenderlas mejor) http://www.scipy.org/EricsBroadcastingDoc
11. Numpy Broadcasting, las operaciones son elemento a elemento a = arange(10).reshape(2,5) b = ones((5)) print a, b, a+b # Si b = ones((6)) Daría error a = arange(10).reshape(10,1) b = ones((5)).reshape(1,5) print a, b, a+b # Si a o b solo tienen una dimensión y mismo número de elementos dará error
12. Numpy Soporta más tipos numéricos que python (bool, int, int8-16-32-64, uint8-16-32-64, float, float8-16-32-64, complex, complex64-128). Los tipos numéricos son instancias de la clase dtype. Para convertir de un tipo de número a otro podemos usar el método .astype() o el tipo como una función. Es preferible usar la primera forma.
13. Numpy Como creamos un array con numpy Convirtiéndolo desde otra estructura de python (listas, tuplas,...) Funciones numpy (arange, zeros, empty, linspace, random, ogrid, mgrid,...) Leyendo desde disco (loadtxt, genfromtxt,…)
14. Numpy Como creamos un array con numpy Convirtiéndolo desde otra estructura de python (listas, tuplas,...) a = [‘1.2’, ‘3.6’] b = np.array(a).astype(float) # Si quisiéramos solo la parte entera c = np.array(a).astype(float).astype(int)
15. Numpy Como creamos un array con numpy Funciones numpy (arange, zeros, empty, linspace, random, ogrid, mgrid,...) a = np.arange(10) a = np.zeros((3,4), dtype=int) a = np.linspace(0,10,100) …
16. Numpy Como creamos un array con numpy Leyendo desde disco (loadtxt, genfromtxt,…) a = np.loadtxt(‘./datos/hito.050m0’) a = np.genfromtxt(‘./datos/hito.050m0’) # genfromtxt es más general, tiene muchas más opciones de lectura, pero es más lento
17. Numpy Indexing x = np.arange(10).reshape(2,5) x[1][2] = x[1,2] x[np.array([0,1]), np.array([0,1])] # Si el índice está fuera de los límites tendremos error
18. Numpy Indexing Los arrays están ordenados igual que en C, de forma que el índice último es el que cambia más rápidamente la localización en memoria. En fortran o IDL esto es al contrario. Máscaras o indices booleanos x[x>5]
19. Numpy Valores especiales: NaN, Inf, -Inf Y operaciones con/sin ellos isnan() isinf() isfinite() nan_to_num() nansum() nanmax(), nanmin() nanargmax(), nanargmin()
20. Numpy Y muchas cosas más que en conjunción con Scipy lo convierten en una herramienta muy poderosa
22. Matplotlib Lo podemos configurar con nuestras preferencias En linux se puede configurar el usuario, el sistema En Win se puede configurar el sistema Se puede configurar la sesión >> rcParams Se puede configurar el script
23. Matplotlib El principal submódulo para dibujar es pyplot importmatplotlib.pyplot as plt # Con pyplot podemos hacer prácticamente todo de forma sencilla
24. Matplotlib El principal submódulo para dibujar es pyplot Colores: Se pueden escribir letras que indican colores, nombres de colores, código hexadecimal se puede usar la keywordcolor plt.plot(x,y, color = ‘blue’) plt.plot(x,y, ‘b’) plt.plot(x,y, ‘blue’) plt.plot(x,y, ‘#FF00FF’) plt.plot(x,y, color=‘#FF00FF’)
25. Matplotlib El principal submódulo para dibujar es pyplot Marcadores: Por supuesto, las líneas y marcadores se pueden controlar más finamente con keywords: Plt.plot(x,color=‘b’,linestyle=‘dashdot’,linewidth=4, marker=‘o’, markerfacecolor=‘red’, markeredgecolor=‘black’, markeredgewidth=4, markersize=12)
26. Matplotlib El principal submódulo para dibujar es pyplot Marcadores: Aligual que con los colores, hay muchas formas de definir los marcadores.
27. Matplotlib El principal submódulo para dibujar es pyplot Etiquetas para los ejes: Se controlan mediante xticks e yticks. plt.plot(range(5)) plt.xticks(range(5),(‘x1’, ’x2’, ’x3’, ’x4’, ’x5’))
29. Matplotlib Tipos de gráficos: Histogramas y = np.random.randn(1000) plt.hist(y, 25) Circulares (quesitos) aficion = [3000,3000,100] etiquetas = [‘Madrid’,’Barcelona’,’Getafe’] plt.pie(aficion, labels = etiquetas) Scatter (x vs y) x = arange(1000) y = np.random.randn(1000) plt.scatter(x,y)
30. Matplotlib Subplots (varios gráficos en el mismo ‘tapiz’): Subplot(nºfilas,nºcolumnas,orden) plt.subplot(211) plt.plot(arange(10) plt.subplot(212) plt.scatter(arange(0,10,-1)