Operaciones aritméticas en Numpy
Clase 10 de 32 • Curso de Machine Learning Aplicado con Python
Contenido del curso
Clase 10 de 32 • Curso de Machine Learning Aplicado con Python
Contenido del curso
Usuario anónimo
Luis Hernando Sarmiento Garzón
Jimmy Buriticá Londoño
Pedro Ortiz
Usuario anónimo
Alberto Gobbi
Loren Johanna Vásquez Rivera
Jimmy Buriticá Londoño
Alejandro Cuello Maure
Usuario anónimo
Franklin Gil
Wildin Mota
María José Medina
Juan José Mamani Tarqui
Diego Andres Fonseca Soto
Jean Paul
Jhon Fredy Beltrán León
Mario Álvaro Castro Barrón
Darvin Orozco
Laura Manuela Osorio Gonzalez
Usuario anónimo
Hugo Alexander Gonzalez Bocanegra
Cristian Orozco Benjumea
Alonso Diaz Gutierrez
Wilson Fernando Antury Torres
Usuario anónimo
Jose Daniel Delgado Ballen
Florelva Rozo Garcia
Luis Alejandro Hernández Contreras
Kevin J. Zea Alvarado
Javier Guevara
Diego Cesar Lerma Torres
Kevin Henriquez
Wilman Hermenegildo Jiménez Moreno
Numpy es una librería muy util. los invito a ver esta conferencia donde muestran muy bien las herramientas de numpy https://www.youtube.com/watch?v=ZB7BZMhfPgk
Gracias, esta muy buena.
Muy interesante el video.
Como me dijo un gran amigo en el trabajo, "Cada ves que iteras con un loop un gatito se muere, intenta no hacer loops y mejor usa arrays"
:D
Ojo, en el experimento en el minuto 7, en el primer caso también se está sumando el tiempo de creación de los vectores y esto no debería ser considerado, ya que sólo queremos notar la diferencia al momento de la suma. En mi caso los puse aparte, igualmente el tiempo es menor en el segundo caso, pero son cosas que deben considerarse al momento de comparar.
Considero bastante pertinente el uso de funciones en Numpy para estadística, muy útil.
El módulo timeit proporciona una interfaz simple para determinar el tiempo de ejecución de pequeñas partes de código Python.
Es cierto pero te recomiendo que al momento de medir los tiempos de ejecución no uses este metodo ya que puede conducir a mediciones "mal hechas".
Por que puede tomar el tiempo dependiendo de muchos factores, por ejemplo de cuantos recursos estemos consumiendo al momento de hacer la medicion.
No es una buena forma de medir la "efectividad" de la ejecucion. Por que puede arrojar resultados un poquito sesgados.
Este tio si sabe explicar!
a = np.range(4) print("a =", a) print("a + 5 =", a + 5) print("a - 5 =", a - 5) print("a * 2 =", a * 2) print("a / 2 =", a / 2) print("a // 2 =", a // 2) print("-a =", -a) print("a ** 2 =", a ** 2) print("a % 2 =", a % 2)```
np.arange(4)*
Algunos ejemplos de broadcasting:
Me hiciste recordar
Hay un error de edición en 7:35 😃
Jajajja si es verdad 😃
Creo que lo hacen para hacer al profesor mas divertido y no tenerle temor a numpy :v
Más sobre las ufuncs
Gracias, muy buen aporte sobre las Universal Functions. Me fui directo a la sección "Methods"
Recomendado este artículo de Nature: Array programming with NumPy https://www.nature.com/articles/s41586-020-2649-2
Muchas gracias por la explicación relacionada al rendimiendo al usar código 'vectorizado', ahora entiendo porque hace un par de meses mientras me encontraba haciendo un proyecto de redes neuronales sobre el torneo MeLiDataChallenge2019 de Mercado Libre me aparecía una advertencia (Warning) por usar ciclos 'for' en una de las etapas finales del proceso, y también por intentar crear una copia redundante de esta para poder realizar el proceso de unir dos tablas de datos (En Portugués y Español). Con esto aprendí a mejorar el rendimiento al momento de realizar el tratamiento de la información. Muchas gracias.
En ésta clase vimos bases prácticas para lo siguiente del curso.
¡Hola! Si estas usando livewiere en la version 3.x puede ser que necesites usar "wire:model.live" ya que se hizo esto como un ajuste de rendimiento, ahora wire:model debe ser accionado con un botón (enviar, actualizar)
Documentación de numpy:
Gracias por el aporte
Como funciona la instrucción %%timeit
El método timeit() ejecuta un bloque de instrucciones repetidamente, (el valor predeterminado es 1000000) para obtener una medición estadísticamente relevante del tiempo de ejecución del código y devuelve la cantidad de tiempo que paso.
Intenta con sólo un % o con ninguno y paréntesis al final, como si fuese una función.
Cuál de los comandos?
Dato cursioso sobre %%timeit timeit es una "cell magic". Esto es, un tipo de comando que sólo existe en IPython (y no está disponible en el shell estándar de Python). Los comandos "mágicos" ++nos permiten controlar el comportamiento del propio IPython++. Para llamarlos se usa una % (debido a que este no es un caracter comúnmente usado en el lenguaje, lo que lo dejaba relativamente disponible)
Las funciones mágicas pueden ser de dos tipos:
Line magic Inician con el caracter %. El resto de la línea Su efecto es similar al de las llamadas a la linea de comandos.
Cell magic Inician con %% y DEBEN ESCRIBIRSE AL INICIO DE LA CELDA. Pueden operar en múltiples líneas. Estas funciones pueden hacer modificaciones arbitrarias en el input que reciben
De hecho con esto me acabo de enterar que cuando hacemos
%matplotlib inline
Es también una función mágica
Para obtener más información sobre cualquier función mágica, basta con escribirla y agregarle un ? al final, tal como:
%timeit?
Esto desplegará información acerca de cómo funciona este comando, su sintaxis y algunos ejemplos
P.D. Por si a alguno le pasó lo mismo que a mí: Cuando escribí la función %%timeit, le puse un comentario arriba para anotar lo que el profesor explicó que iba a pasar de la siguiente forma
# comentario %%timeit a = np.arange(1000000) b = np.zeros(1000000) i = 0 for el in a: b[i] = el+el i+=1
Lo cual me mandaba este error:
UsageError: Line magic function `%%timeit` not found.
La solucion fue eliminar el comentario de ahi y colocarlo debajo (o quitarlo completamente)
%%timeit # Comentario a = np.arange(1000000) b = np.zeros(1000000) i = 0 for el in a: b[i] = el+el i+=1
Las funciones cell magic requieren ser lo primero que se escribe en la celda. Cuando no son lo primero, IPython piensa que es una line magic (y manda error porque la sintaxis usada no es correcta para esta forma)
++Si necesitas saber como poner Texto en Jupyer Notebook ++
En el menu superior donde dice **Code **debes cambiarlo por Markdown
Y luego escribes en la cel # + (El texto que quieres escribir)
<code> #Operaciones con escalares import numpy as np b = np.array([2, 3, 4, 5,6]) b + 2 array([4, 5, 6, 7, 8]) --------------------------------------------------------------------------------- #Operaciones con escalares import numpy as np b = np.array([2, 3, 4, 5,6]) 3**b array([ 9, 27, 81, 243, 729]) ------------------------------------------------------------------------------ Multiplicación matricial import numpy as np c = np.ones((4, 4)) c.dot(c) array([[4., 4., 4., 4.], [4., 4., 4., 4.], [4., 4., 4., 4.], [4., 4., 4., 4.]]) -------------------------------------------------------- #Transposición import numpy as np a = np.triu(np.ones((3, 3)), 1) a array([[ 0., 1., 1.], [ 0., 0., 1.], [ 0., 0., 0.]]) a.T # tambien, a.transpose() array([[ 0., 0., 0.], [ 1., 0., 0.], [ 1., 1., 0.]])