Hola a todos. Hoy aprenderemos Numpy, un paquete muy usado en la comunidad de la ciencia de los datos y que nos permite trabajar eficientemente con arreglos y matrices en Python. Primero, vamos a importar Numpy como np. Esto nos permite usar el atajo np para referirnos a Numpy Ahora creamos nuestro primer arreglo. Podemos comenzar creando una lista y convirtiéndola en un arreglo. Así que aquí está nuestro primer arreglo Numpy. Podemos hacerlo de manera más sencilla, pasando la lista directamente. Ahora vamos a crear matrices multidimensionales pasando una lista de listas. Pasamos dos listas con tres elementos cada una, y obtenemos una matriz de dos por tres. Podemos comprobar las dimensiones mediante el atributo "shape". Para la función "arange", pasamos inicio, fin y un tamaño de paso, Y retorna valores uniformemente espaciados dentro del intervalo dado. Supongamos que queremos convertir esta matriz de números a una matriz de tres por cinco. Podemos usar "reshape" para hacer eso. La función "linspace" es similar a "arange", excepto que debemos decir cuántos números queremos que retorne, y se dividirá el intervalo en consecuencia. Podemos usar "resize" para cambiar las dimensiones. Numpy también incluey funciones y atajos para crear arreglos. "ones" devuelve una matriz de unos, "zeros" devuelve una matriz de ceros. "eye" devuelve una matriz con unos en la diagonal y ceros en el resto de los lugares, y "diag" construye una matriz diagonal. Para crear un arreglo con valores repetidos, podemos pasar una lista repetida, o podemos usar la función "repeat" de Numpy. Observa la diferencia entre las dos salidas. También podemos combinar arreglos para crear otros nuevos. Vamos a crear una matriz con unos de dos por tres y apilarla verticalmente consigo misma, multiplicada por 2. Y aquí hacemos lo mismo, pero apilado horizontalmente. Ahora, veamos algunas operaciones que podemos hacer sobre arreglos con Numpy. Realizar la adición, sustracción, multiplicación y división de elementos es sencillo, como lo es también elevar a una potencia. Para aquellos que están familiarizados con el álgebra lineal, El producto punto se puede hacer usando la función "dot". Ahora creamos una nueva matriz usando la matriz "y" anterior y sus valores al cuadrado. La forma de este arreglo es dos por tres. También podemos obtener la transpuesta de una matriz usando el método "t", que intercambia filas y columnas. La forma de la matriz transpuesta es de tres por dos. Con "dtype" podemos ver qué tipo de datos tiene la matriz, y con "astype", convertimos una matriz a un tipo diferente. En Numpy hay también muchas funciones matemáticas útiles que podemos usar. Echemos un vistazo a algunas de uso común. Aquí tenemos nuestro nuevo arreglo "a". Y podemos ver la suma de los valores, el máximo y el mínimo, o el promedio y la desviación estándar. Para encontrar el índice de un valor máximo o mínimo, podemos usar "argmax" y "argmin". A continuación, vamos a aprender sobre la indexación y el "rebanado". Vamos a crear una matriz con los cuadrados de 0 a 12. Podemos usar la notación de paréntesis para obtener el valor en un posición particular, y la notación de dos puntos para obtener un rango. La notación es inicio y tamaño del paso. No es necesario especificar el índice inicial o final. Incluso podemos usar negativos para contar desde el final de la matriz. Para nuestro primer ejemplo, veamos el rango que comienza del índice uno y se detiene antes del índice cinco. A continuación, obtengamos una porción con los últimos cuatro elementos de la matriz. Y aquí tomamos desde la quinta posición empezando desde el final hasta el comienzo de la matriz y contando hacia atrás en pasos de a dos. Veamos cómo se extiende esto a una matriz bidimensional. Primero, hagamos una matriz bidimensional, 0 a 35. Podemos obtener un valor específico usando la notación de coma. Este es el valor de la segunda fila y segunda columna. Ahora vamos a usar la notación de dos puntos para obtener una porción de la tercera fila y columnas tres a seis. También podemos obtener las dos primeras filas y todas las columnas excepto la última. Así es como seleccionaríamos cada segundo elemento de la última fila. También podemos usar el operador de paréntesis para hacer indexación y asignación condicional. Por ejemplo, esto devolverá un arreglo que son los elementos mayores a 30 de nuestra matriz original. Y esta asignación tomará esos elementos dentro de nuestra matriz original y les asignará un nuevo valor. Aquí estamos limitando el valor máximo de los elementos de nuestra matriz a 30. A continuación, veamos cómo se copian datos en Numpy. En primer lugar, vamos a crear una nueva matriz "r2", que es una porción de la matriz "r". Ahora, vamos a ponerle cero a todos los elementos de la matriz. Cuando miramos la matriz original "r", podemos ver que la porción en "r" también se ha cambiado. Esto es algo a tener en cuenta y hay que ser cuidadoso al trabajar con matrices en Numpy. Si deseamos crear una copia de la matriz "r" que no modifique la matriz original, podemos usar "r_copy". Podemos ver que si cambiamos a diez el valor de todos los elementos con "r_copy", La matriz original "r" permanece sin cambios. Por último, vamos a aprender cómo iterar sobre matrices. En primer lugar, vamos a crear un arreglo de números aleatorios de cero a nuevo con un tamaño de cuatro por tres. Podemos iterar por fila escribiendo "for row in test", por ejemplo. Podemos iterar por el índice de fila usando la función length sobre "test", que devuelve el número de filas. Podemos combinar estas dos formas de iterar usando "enumerate", que nos da la fila y el índice de la fila. Hagamos una nueva matriz, "test2". Si deseamos iterar a través de ambos arreglos, podemos usar "zip". Numpy tiene mucho que ofrecer. Asegúrate de revisar la documentación para obtener más información. Gracias por acompañarme. Espero verte nuevamente.