Tutorial de Python Numpy (con Jupyter y Colab)

Este tutorial fue contribuido originalmente por Justin Johnson.

usaremos el lenguaje de programación Python para todas las tareas de este curso.Python es un gran lenguaje de programación de propósito general por sí mismo, pero con la ayuda de algunas bibliotecas populares (numpy, scipy, matplotlib) se convierte en un poderoso entorno para la computación científica.,

esperamos que muchos de ustedes tengan alguna experiencia con Python y numpy;para el resto de ustedes, esta sección servirá como un curso rápido sobre el lenguaje de programación Python y su uso para la computación científica. También presentaremos los cuadernos, que son una forma muy conveniente de retocar el código Python. Algunos de ustedes pueden tener conocimientos previos en un lenguaje diferente, en cuyo caso también recomendamos referenciar:NumPy para usuarios de Matlab,Python para usuarios de R y/orPython para usuarios de SAS.,

  • Listas
  • Diccionarios
  • Marca
  • Tuplas
  • Funciones
  • Clases
  • Colección
    • Matrices
    • Array de indexación
    • tipos de datos
    • Array de matemáticas
    • Radiodifusión
    • Numpy Documentación
  • SciPy
    • operaciones de Imágenes
    • archivos de MATLAB
    • Distancia entre los puntos
  • Matplotlib
    • Trazado
    • Subparcelas
    • Imágenes
  • Jupyter y Colab Cuadernos

    Antes de profundizar en Python, nos gustaría hablar brevemente acerca de los cuadernos.,Un Jupyter notebook le permite escribir y ejecutar código python localmente en su navegador web. Los cuadernos de Jupyter hacen que sea muy fácil jugar con el código y ejecutarlo en bits y piezas; por esta razón son ampliamente utilizados en la computación científica.Colab, por otro lado, es el sabor de Google de los cuadernos Jupyter que es particularmente adecuado para el aprendizaje automático y el análisis de datos y que se ejecuta completamente en la nube.,Colab es básicamente Jupyter notebook on steroids: es gratis, no requiere configuración,viene preinstalado con muchos paquetes, es fácil de compartir con el mundo y se beneficia de acceso gratuito a aceleradores de hardware como GPU y TPU (con algunas advertencias).

    Ejecutar Tutorial en Colab (recomendado). Si desea ejecutar este tutorial completamente en Colab, haga clic en la insignia Open in Colab en la parte superior de esta página.

    Ejecutar Tutorial en Jupyter Notebook., Si desea ejecutar el notebook localmente con Jupyter, asegúrese de que su entorno virtual esté instalado correctamente (según las instrucciones de configuración), actívelo y luego ejecute pip install notebook para instalar Jupyter notebook. A continuación, abra el cuaderno y descárguelo en un directorio de su elección haciendo clic derecho en la página y seleccionando Save Page As. Entonces cd a ese directorio y ejecutar jupyter notebook.

    Esto debería iniciar automáticamente una notebook servidor en el .,Si todo funcionó correctamente, debería ver una pantalla como esta, mostrando todos los cuadernos disponibles en el directorio actual. Haga clic en jupyter-notebook-tutorial.ipynb y siga las instrucciones en el cuaderno. De lo contrario, puede continuar leyendo eltutorial con fragmentos de código a continuación.

    Python

    Python es un alto nivel, de forma dinámica escribió lenguaje de programación multiparadigma.A menudo se dice que el código Python es casi como un pseudocódigo, ya que le permite expresar ideas muy poderosas en muy pocas líneas de código mientras es muy legible., Como ejemplo, aquí está una implementación del quicksortalgorithm clásico en Python:

    versiones de Python

    a partir del 1 de enero de 2020, Python ha eliminado oficialmente el soporte para python2.Para esta clase todo el código utilizará Python 3.7. Asegúrese de haber pasado por las instrucciones de configuración e instalado correctamente un entorno virtual python3 antes de continuar con este tutorial.Puede verificar su versión de Python en la línea de comandos después de activar su entorno ejecutando python --version.,

    tipos de datos básicos

    Al igual que la mayoría de los lenguajes, Python tiene una serie de tipos básicos que incluyen enteros,flotadores, booleanos y cadenas. Estos tipos de datos se comportan de maneras que son familiares de otros lenguajes de programación.

    Números: Los enteros y los flotadores funcionan como cabría esperar de otros lenguajes:

    tenga en cuenta que, a diferencia de muchos lenguajes, Python no tiene operadores de incremento único (x++) o decremento (x--).

    Python también tiene tipos incorporados para números complejos;puede encontrar todos los detalles en la documentación.,

    booleanos: Python implementa todos los operadores habituales para la lógica booleana, pero usa palabras en inglés en lugar de símbolos (&&, ||, etc.):

    Strings: Python tiene un gran soporte para strings:

    Los objetos String tienen un montón de métodos útiles; por ejemplo:

    Puede encontrar una lista de todos los métodos string en la documentación.

    contenedores

    Python incluye varios tipos de contenedores integrados: listas, diccionarios, conjuntos y tuplas.,

    Lists

    Una lista es el equivalente en Python de una matriz, pero es redimensionable y puede contener elementos de diferentes tipos:

    como de costumbre, puede encontrar todos los detalles sangrientos sobre las listas en la documentación.

    Slicing:además de acceder a los elementos de la lista uno a la vez, Python proporciona sintaxis de compresión para acceder a sublistas; esto se conoce como slicing:

    volveremos a ver slicing en el contexto de arrays numpy.,bucles

    : Puede realizar un bucle sobre los elementos de una lista como este:

    animals = for animal in animals: print(animal)# Prints "cat", "dog", "monkey", each on its own line.

    Si desea acceder al índice de cada elemento dentro del cuerpo de un bucle,use la función incorporadaenumerate:

    : al programar, frecuentemente queremos transformar un tipo de datos en otro.,Como un ejemplo simple, considere el siguiente código que calcula los números cuadrados:

    nums = squares = for x in nums: squares.append(x ** 2)print(squares) # Prints 

    puede simplificar este código utilizando una comprensión de Lista:

    nums = squares = print(squares) # Prints 

    ondiciones:

    nums = even_squares = print(even_squares) # Prints ""

    diccionarios

    un diccionario almacena pares (clave, valor), similares a un Map en un objeto Java Oran en JavaScript., Puede usarlo de la siguiente manera:

    Puede encontrar todo lo que necesita saber sobre diccionariosen la documentación.bucles

    : es fácil iterar sobre las claves en un diccionario:

    Si desea acceder a las claves y sus valores correspondientes, use el método items:

    comprensiones del diccionario:estas son similares a las comprensiones de la lista, pero le permiten construir fácilmente diccionarios. Por ejemplo:

    nums = even_num_to_square = {x: x ** 2 for x in nums if x % 2 == 0}print(even_num_to_square) # Prints "{0: 0, 2: 4, 4: 16}"

    Marca

    Un conjunto es una colección desordenada de los distintos elementos., Como un ejemplo simple, considere lo siguiente:

    como de costumbre, todo lo que desea saber sobre los conjuntos se puede encontrar en la documentación.,

    bucles:iterar sobre un conjunto tiene la misma sintaxis que iterar sobre una lista;sin embargo, dado que los conjuntos no están ordenados, no puede hacer suposiciones sobre el orden en el que visita los elementos del conjunto:

    animals = {'cat', 'dog', 'fish'}for idx, animal in enumerate(animals): print('#%d: %s' % (idx + 1, animal))# Prints "#1: fish", "#2: dog", "#3: cat"

    comprensiones de conjuntos:al igual que las listas y los diccionarios, podemos construir fácilmente conjuntos utilizando comprensiones de conjuntos:

    from math import sqrtnums = {int(sqrt(x)) for x in range(30)}print(nums) # Prints "{0, 1, 2, 3, 4, 5}"

    tuplas

    una tupla es una lista ordenada (inmutable) de valores.,Una tupla es en muchos sentidos similar a una lista; una de las diferencias más importantes es que las tuplas pueden ser usadas como claves en diccionarios y como elementos de conjuntos, mientras que las listas no pueden.Aquí hay un ejemplo trivial:

    la documentación tiene más información sobre las tuplas.

    Functions

    Las funciones de Python se definen usando la palabra clave def. Por ejemplo:

    a menudo definiremos funciones para tomar argumentos de palabras clave opcionales, como esto:

    hay mucha más información sobre las funciones de Python en la documentación.,

    clases

    la sintaxis para definir clases en Python es sencilla:

    Puede leer mucho más sobre las clases de Python en la documentación.

    Numpy

    Numpy es la biblioteca central para la computación científica en Python.It proporciona un objeto de matriz multidimensional de alto rendimiento y herramientas para trabajar con estosarays. Si ya está familiarizado con MATLAB, puede encontrar este tutorial útil para comenzar con Numpy.

    Arrays

    una matriz numpy es una cuadrícula de Valores, todos del mismo tipo, y está indexada por una tupla de enteros no negativos., El número de dimensiones es el rango de la matriz; la forma de una matriz es una tupla de enteros que da el tamaño de la matriz a lo largo de cada dimensión.

    Podemos inicializar arrays numpy desde listas de Python anidadas,y acceder a los elementos usando corchetes:

    Numpy también proporciona muchas funciones para crear arrays:

    Puede leer sobre otros métodos de creación de arrays en la documentación.

    indexación de matrices

    Numpy ofrece varias formas de indexar en matrices.

    Slicing: Similar a las listas de Python, los arrays numpy se pueden cortar.,Dado que las matrices pueden ser multidimensionales, debe especificar un sector para cada dimensión de la matriz:

    También puede mezclar la indexación de enteros con la indexación de sectores.Sin embargo, hacerlo producirá una matriz de menor rango que la matriz original.Tenga en cuenta que esto es bastante diferente de la forma en que MATLAB maneja arrayslicing:

    indexación de matrices enteras:cuando indexa en matrices numpy utilizando el corte, la vista de matriz resultante siempre será un subarray de la matriz original. Por el contrario, arrayindexing entero le permite construir arrays arbitrarios utilizando los datos de otroarray., Aquí hay un ejemplo:

    un truco útil con la indexación de matrices enteras es seleccionar o mutar un elemento de cada fila de una matriz:

    indexación de matrices booleanas:la indexación de matrices booleanas le permite seleccionar elementos arbitrarios de una matriz.Con frecuencia este tipo de indexación se utiliza para seleccionar los elementos de un arraythat satisfacer alguna condición. He aquí un ejemplo:

    por brevedad hemos omitido muchos detalles sobre la indexación de matrices numpy;si quieres saber más deberías leer la documentación.

    Datatypes

    cada matriz numpy es una cuadrícula de elementos del mismo tipo.,Numpy proporciona un gran conjunto de tipos de datos numéricos que puede usar para construir matrices.Numpy intenta adivinar un tipo de datos cuando se crea una matriz, pero las funciones que constructarrays normalmente también incluyen un argumento opcional para especificar explícitamente el tipo de datos.Aquí hay un ejemplo:

    puede leer todo sobre los tipos de datos numpy en la documentación.,

    matemáticas de matriz

    las funciones matemáticas básicas operan elementwise en matrices, y están disponibles tanto como sobrecargas de operador y como funciones en el módulo numpy:

    tenga en cuenta que a diferencia de MATLAB, * es la multiplicación elementwise, no matrixmultiplicación. En su lugar, usamos la función dot para calcular productos internos de vectores, para multiplicar un vector por una matriz y matrices múltiples., dot está disponible tanto como una función en el módulo numpymodule como como un método de instancia de objetos de matriz:

    Numpy proporciona muchas funciones útiles para realizar cálculos onarrays; una de las más útiles es sum:

    puede encontrar la lista completa de funciones matemáticas proporcionadas por numpy en la documentación.

    además de computar funciones matemáticas usando arrays, frecuentemente necesitamos remodelar o manipular datos en arrays., El ejemplo más simple de este tipo de operación es transponer una matriz; para transponer una matriz,simplemente use el atributo T de un objeto de matriz:

    Numpy proporciona muchas más funciones para manipular matrices; puede ver la lista completa en la documentación.

    Broadcasting

    Broadcasting es un poderoso mecanismo que permite a numpy trabajar con matrices de diferentes formas al realizar operaciones aritméticas. Con frecuencia tenemos una matriz más pequeña y una matriz más grande, y queremos usar la matriz más pequeña varias veces para realizar alguna operación en la matriz más grande.,

    por ejemplo, supongamos que queremos añadir un vector constante a cada una de las acciones de una matriz. Podríamos hacerlo así:

    esto funciona; sin embargo, cuando la matriz x es muy grande, computar un Loopin explícito Python podría ser lento. Tenga en cuenta que agregar el vector v a cada fila de la matrizx es equivalente a formar una matriz vv apilando múltiples copias de v verticalmente,luego realizando la suma elementwise de x y vv., Podríamos implementar este enfoque de la siguiente manera:

    numpy broadcasting nos permite realizar este cálculo sin crear en realidad varias copias de v., Considere esta versión, usando difusión:

    la línea y = x + v funciona a pesar de que x tiene forma (4, 3) y v tiene forma(3,) debido a la difusión; esta línea funciona como si v realmente tuviera forma (4, 3),donde cada fila era una copia de v, y la suma se realizó elementwise.,

    transmitir dos arrays juntos sigue estas reglas:

    1. si los arrays no tienen el mismo rango, anteponga la forma del arraywith rango inferior 1s hasta que ambas formas tengan la misma longitud.
    2. Se dice que los dos arrays son compatibles en una dimensión si tienen el mismo tamaño en la dimensión, o si uno de los arrays tiene Tamaño 1 en esa dimensión.
    3. los arrays pueden transmitirse juntos si son compatibles en todas las dimensiones.
    4. Después de la difusión, cada array se comporta como si tuviera una forma igual al elementwisemaximum de formas de los dos arrays de entrada.,
    5. en cualquier dimensión donde un array tenía Tamaño 1 y el otro array tenía tamaño mayor que 1,el primer array se comporta como si estuviera copiado a lo largo de esa dimensión

    Si esta explicación no tiene sentido, intente leer la explicación de la documentationor esta explicación.

    Las funciones que soportan la radiodifusión se conocen como funciones universales. Puede encontrar la lista de todas las funciones universales en la documentación.,

    Aquí hay algunas aplicaciones de radiodifusión:

    la radiodifusión típicamente hace que su código sea más conciso y más rápido, por lo que debe esforzarse por usarlo siempre que sea posible.

    numpy Documentation

    este breve resumen ha tocado muchas de las cosas importantes que necesitas saber sobre numpy, pero está lejos de estar completo. Echa un vistazo a la referencia de NumPy para descubrir mucho más sobre numpy.

    SciPy

    Numpy proporciona una matriz multidimensional de alto rendimiento y herramientas básicas para calcular y manipular estas matrices.,Scipybuye en esto, y proporciona un gran número de funciones que operan en matrices numpy y son útiles para diferentes tipos de aplicaciones científicas y de ingeniería.

    la mejor manera de familiarizarse con SciPy es abrir la documentación.Destacaremos algunas partes de SciPy que podrían ser útiles para esta clase.

    operaciones de imagen

    SciPy proporciona algunas funciones básicas para trabajar con imágenes.Por ejemplo, tiene funciones para leer imágenes del disco en matrices numpy, para escribir matrices numpy en el disco como imágenes y para cambiar el tamaño de las imágenes.,Aquí hay un ejemplo simple que muestra estas funciones:

    izquierda: la imagen original. Derecha: la imagen teñida y redimensionada.

    archivos MATLAB

    las funciones scipy.io.loadmaty scipy.io.savemat le permiten leer y escribir archivos MATLAB. Puede leer sobre ellos en la documentación.

    distancia entre puntos

    SciPy define algunas funciones útiles para calcular distancias entre conjuntos de puntos.,

    la función scipy.spatial.distance.pdist calcula la distancia entre todos los pares de puntos en un conjunto dado:

    Puede leer todos los detalles sobre esta funciónen la documentación.

    una función similar (scipy.spatial.distance.cdist) calcula la distancia entre todos los pares a través de dos conjuntos de puntos; puede leer sobre ello en la documentación.

    Matplotlib

    Matplotlib es un trazado library.In esta sección proporciona una breve introducción al módulo matplotlib.pyplot, que proporciona un sistema de trazado similar al de MATLAB.,

    trazado

    la función más importante en matplotlib es plot, que le permite trazar datos 2D. He aquí un ejemplo sencillo:

    Ejecutar este código produce la siguiente parcela:

    Con un poco de trabajo extra fácilmente podemos graficar varios linesat una vez, y agregar un título, la leyenda y las etiquetas del eje:

    Usted puede leer mucho más sobre el plot functionin la documentación.,

    subtramas

    puede trazar diferentes cosas en la misma figura utilizando la función subplot.He aquí un ejemplo:

    Usted puede leer mucho más sobre el subplot functionin la documentación.

    Images

    puede utilizar la función imshow para mostrar imágenes. He aquí un ejemplo:

    Share

    Deja una respuesta

    Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *