Jupyter notebook Programación para ingenieria con python & IPython.ipynb
---------------------------------------------------------------------------
TypeError Traceback (most recent call last)
<ipython-input-3-9013fa957535> in <module>()
----> 1 1 + 1j > 0 + 1j
TypeError: no ordering relation is defined for complex numbers
---------------------------------------------------------------------------
ImportError Traceback (most recent call last)
<ipython-input-73-6d157f8783bf> in <module>()
----> 1 get_ipython().magic(u'load_ext pep8magic')
/projects/sage/sage-6.9/local/lib/python2.7/site-packages/IPython/core/interactiveshell.pyc in magic(self, arg_s)
2334 magic_name, _, magic_arg_s = arg_s.partition(' ')
2335 magic_name = magic_name.lstrip(prefilter.ESC_MAGIC)
-> 2336 return self.run_line_magic(magic_name, magic_arg_s)
2337
2338 #-------------------------------------------------------------------------
/projects/sage/sage-6.9/local/lib/python2.7/site-packages/IPython/core/interactiveshell.pyc in run_line_magic(self, magic_name, line)
2255 kwargs['local_ns'] = sys._getframe(stack_depth).f_locals
2256 with self.builtin_trap:
-> 2257 result = fn(*args,**kwargs)
2258 return result
2259
/projects/sage/sage-6.9/local/lib/python2.7/site-packages/IPython/core/magics/extension.pyc in load_ext(self, module_str)
/projects/sage/sage-6.9/local/lib/python2.7/site-packages/IPython/core/magic.pyc in <lambda>(f, *a, **k)
191 # but it's overkill for just that one bit of state.
192 def magic_deco(arg):
--> 193 call = lambda f, *a, **k: f(*a, **k)
194
195 if callable(arg):
/projects/sage/sage-6.9/local/lib/python2.7/site-packages/IPython/core/magics/extension.pyc in load_ext(self, module_str)
64 if not module_str:
65 raise UsageError('Missing module name.')
---> 66 res = self.shell.extension_manager.load_extension(module_str)
67
68 if res == 'already loaded':
/projects/sage/sage-6.9/local/lib/python2.7/site-packages/IPython/core/extensions.pyc in load_extension(self, module_str)
87 if module_str not in sys.modules:
88 with prepended_to_syspath(self.ipython_extension_dir):
---> 89 __import__(module_str)
90 mod = sys.modules[module_str]
91 if self._call_load_ipython_extension(mod):
ImportError: No module named pep8magic
---------------------------------------------------------------------------
NameError Traceback (most recent call last)
<ipython-input-13-81daf8c61bdd> in <module>()
----> 1 array([1, 2, "3"])
NameError: name 'array' is not defined
---------------------------------------------------------------------------
NameError Traceback (most recent call last)
<ipython-input-13-60b725f10c9c> in <module>()
----> 1 a
NameError: name 'a' is not defined
---------------------------------------------------------------------------
NameError Traceback (most recent call last)
<ipython-input-14-56816b5d7e39> in <module>()
----> 1 a.astype(int)
NameError: name 'a' is not defined
Motivo: eficiencia
Los bucles son costosos
Eliminar bucles: vectorizar operaciones
Los bucles se ejecutan en Python, las operaciones vectorizadas en C
Las operaciones entre arrays de Numpy se realizan elemento a elemento
Ejemplo:
---------------------------------------------------------------------------
ImportError Traceback (most recent call last)
<ipython-input-19-7c68fb7ecb73> in <module>()
----> 1 from _future_ import braces
ImportError: No module named _future_
Indexación de arrays
Una de las herramientas más importantes a la hora de trabajar con arrays es el indexado. Consiste en seleccionar elementos aislados o secciones de un array. Nosotros vamos a ver la indexación básica, pero existen trécnicas de indexación avanzada que convierten los arrays en herramientas potentísimas.
En Python
En Numpy
Los índices se indican entre corchetes justo después del array. Recuerda que en Python la indexación empieza en 0. Si recuperamos el primer elemento de un array de dos dimensiones, obtnemos la primera fila.
Creación de arrays
Muchos métodos y muy variados
A partir de datos existentes: array, copy
Unos y ceros: empty, eye, ones, zeros, *_like
Rangos: arrange, linspace, losçgspace, meshgrid
Aleatrorios: rand, randn
Unos y Ceros
empty(shape)crea un array con "basura", equivalente a no inicializarlo, ligeramente más rápido que zeros o ones
eye(N, M=None, k=0) crea un array con unos en una diagonal y ceros en el resto
identity(n) devuelve la matriz identidad
Las funciones *_like(a) construyen arrays con el mismo tamaño que uno dado
Rangos
linespace(start, stop, num=50) devuelve números equiespaciados dentro de un intervalo
logspace(start, stop, num=50, base=10.0) devuelve numeros equiespaciados según una escala logarítmica
meshgrid(x1, x2, ...) devuelve matrices de n - coordenadas
Operaciones con arrays
Las funciones universales (ufunc) operan sobre arrays de NumPy elemento a elemento y siguiendo las reglas de broadcasting
Funciones matemáticas; sin, cos, sqrt, exp, ...
Operaciones lógicas: <, ~, ...
Funciones lógicas: all, any, isnan, allclose, ...
Nota: Las funciones de matematicas siempre devuelven el mismo tipo de datos de entrada
Funciones Lógicas
mayor que:">"
menor que:"<"
Funciones de comparación
Las comparaciones devuelven un array de booleanos:
isclose(...)
allclose(...)
Ejercicios
Ejercicio 1
Crear un array z1 3x4 lleno de ceros de tipo entero.
Crear un array z2 3x4 lleno de ceros salvo la primera fila que serán todo unos.
Crear un array z3 3x4 lleno de ceros salvo la última fila que será el rango entre 5 y 8
Ejercicio 2
Crear un vector de 10 elementos, siendo los impares unos y los pares doses.
Crea un "tablero de ajedrez", con unos en las casillas negras y ceros en las blancas
Parte 3 - Visualizacion con matplotlib
¿Qué es matplotlib?
Estándar de facto para visualización en Python
Pretende ser similar a las funciones de visualización de MATLAB
Diferenferentes forma de usarla: interfaz
pyplot<code> y orientadea a objetos
Lo primero que vamos a hacer es activar el modo inline - de ésta manera las figuras aparecerán automáticamente incrustadas en el notebook.
Interfaz pyplot
Función plot: listas o arrays
Personalización de lineas, colores, leyendas
Otros tipos de gráficas:
scatter, contour, fill_between<code>
Cómo pintar un afunción en 1D, en 2D
plt.savefig<code>
Interfaz orientada a objetos
Interfaz orientada a objetos
fig, axes = plt.subplots<code>
Diferencias de conceptos
Clase 10 (video 10)
Ejemplo con datos reales
temperatura.csv: not found
Parte 4 - SciPy
¿Qué es SciPy?
Conjunto de paquetes para computación Científica en general
Integración, optimización, interpolación, procesamiento de señales digitales, estadísticas
Normalmente interfaces a programas muy utilizados escritos en Fortran, o C++
**Integración Numérica**
**Ecuaciones diferenciales ordinarias (EDO's)**
Ecuaciones algebraicas no lineales
Interpolacion
File "<ipython-input-2-6b459e340c1b>", line 1
<html lang="en">
^
SyntaxError: invalid syntax