Python Numpy Tutorial (com Jupyter e Colab)

Este tutorial foi originalmente contribuído por Justin Johnson.

usaremos a linguagem de programação Python para todas as atribuições neste curso.Python é uma grande linguagem de programação de propósito geral por si só, mas com a ajuda de algumas bibliotecas populares (numpy, scipy, matplotlib) torna-se um ambiente powerful para a computação científica.,

esperamos que muitos de vocês têm alguma experiência com Python e numpy;para o resto de vocês, esta seção irá servir como um rápido curso intensivo em ambas linguagem de programação Python e seu uso para scientificcomputing. Também vamos introduzir cadernos, que são uma maneira muito conveniente de ajustar com o código Python. Alguns de vocês podem ter conhecimento prévio em linguagem diferente, e nesse caso também recomendamos referenciamento:NumPy para usuários Matlab,Python para usuários R, e/orPython para usuários SAS.,

  • Lista
  • Dicionários
  • Define
  • as Tuplas
  • Funções
  • Classes
  • Numpy
    • Arrays
    • indexação de Matriz
    • tipos de Dados
    • Array de matemática
    • de Radiodifusão
    • Numpy Documentação
  • SciPy
    • operações Imagem
    • o MATLAB arquivos
    • Distância entre os pontos
  • Matplotlib
    • Plotagem
    • Subparcelas
    • Imagens
  • Jupyter e Colab Notebooks

    Antes de mergulhar em Python, nós gostaríamos de falar um pouco sobre os portáteis.,Um caderno Jupyter permite-lhe escrever e executar o código localmente no seu navegador web. O Jupyter não parece ser muito fácil mexer com o código e executá-lo em bits e Peças; por esta razão, eles são amplamente utilizados na computação científica.Colab, por outro lado, é o sabor do Google de cadernos Jupyter que é particularmente adequado para maquinelearning e análise de dados e que funciona inteiramente na nuvem.,Colab é basicamente Jupyter notebook em esteróides: é grátis, não requer instalação,vem pré-instalado com muitos pacotes, é fácil de compartilhar com o mundo,e beneficia de acesso gratuito à aceleradores de hardware, como GPUs e TPUs (com algumas ressalvas).

    execute Tutorial no Colab (recomendado). Se você deseja executar este tutorial inteiramente no Colab, clique no botãoOpen in Colab no topo desta página.

    Run Tutorial in Jupyter Notebook., Se você deseja executar o notebook localmente com Jupyter, certifique-se de seu ambiente virtual está instalado corretamente (de acordo com as instruções de configuração), ativá-lo, em seguida, executar pip install notebook para instalar o caderno Jupyter. Em seguida, abra o notebook e transfira – o para uma pasta à sua escolha, Carregando com o botão direito na página e seleccionando Save Page As. Then cd to that directory and run jupyter notebook.

    isto deverá lançar automaticamente um servidor de notebook em .,Se tudo funcionar correctamente, deverá ver um ecrã como este, mostrando todos os cadernos disponíveis na pasta actual. Clique em jupyter-notebook-tutorial.ipynbe siga as instruções no notebook. Caso contrário, poderá continuar a ler o tutorial com excertos de código abaixo.

    Python

    Python é uma linguagem de programação multiparadigm de alto nível.O código Python é muitas vezes dito ser quase como pseudocode, uma vez que permite que você expresse ideias muito poderosas em poucas linhas de código ao ser veryreadable., Como um exemplo, aqui está uma implementação do clássico quicksortalgorithm em Python:

    Python versões

    Como de Janurary 1, 2020, Python foi oficialmente descartado suporte para python2.Para esta classe todos os códigos usarão Python 3.7. Certifique-se de que passou pelas instruções de configuração e instalou correctamente um python3 Ambiente virtual antes de prosseguir com este tutorial.Você pode verificar a sua versão em Python na linha de comandos depois de activar o seu ambiente, executando python --version.,

    tipos de dados básicos

    como a maioria das linguagens, Python tem uma série de tipos básicos incluindo inteiros,flutuadores, booleanos e cadeias de caracteres. Estes tipos de dados comportam-se de formas que são familiares de outras linguagens de programação.

    Números: números Inteiros e floats trabalho, como seria de esperar de outras línguas:

    Note que ao contrário de muitas linguagens, Python não tem unário incremento (x++)ou diminuir (x--) operadores.

    Python também tem tipos incorporados para números complexos;você pode encontrar todos os detalhes na documentação.,

    Booleans: Python implementa todos os operadores habituais para a lógica booleana, mas usa palavras em Inglês ao invés de símbolos (, ||, etc.):

    Strings: Python tem um grande suporte para strings:

    String objetos têm um monte de métodos úteis; por exemplo:

    Você pode encontrar uma lista de todos os métodos de string na documentação.

    Containers

    Python includes several built-in container types: lists, dictionaries, sets, and tuples.,

    listas

    uma lista é o equivalente em Python de um array, mas é dimensionável e pode conter elementos de diferentes tipos:

    Como de costume, você pode encontrar todos os detalhes sangrentos sobre as listas na documentação.

    Slicing:para além de aceder aos elementos da lista um de cada vez, a sintaxe Python providesconcise para aceder às sub-listas; esta é conhecida como slicing:

    veremos novamente a slicação no contexto das matrizes numpy.,

    Loops: Você pode fazer um loop sobre os elementos de uma lista como esta:

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

    Se você deseja acessar o índice de cada elemento dentro do corpo de um loop,use o built-in enumerate função:

    Lista de compreensões:Durante a programação, frequentemente queremos transformar um tipo de dados para outro.,Como um simples exemplo, considere o código a seguir, que calcula o quadrado de números:

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

    Você pode fazer esse código mais simples com uma lista de compreensão:

    nums = squares = print(squares) # Prints 

    Lista de compreensões também podem conter condições:

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

    Dicionários

    Um dicionário de lojas (chave, valor) pares, semelhante a uma Map em Java oran objeto em Javascript., Pode usá-lo assim:

    pode encontrar tudo o que necessita de saber sobre dicionários na documentação.

    Loops: é fácil iterar sobre as teclas em um dicionário:

    Se você quiser acesso a chaves e seus valores correspondentes, use o items método:

    Dicionário de compreensões:Estes são semelhantes a lista de compreensões, mas permite que você facilmente constructdictionaries. Por exemplo:

    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}"

    Conjuntos

    um conjunto é uma colecção não ordenada de elementos distintos., Como exemplo simples, considere o seguinte:

    Como de costume, tudo o que você quer saber sobre conjuntos pode ser encontrado na documentação.,

    Loops:Iterando um conjunto tem a mesma sintaxe como iterar sobre uma lista;no entanto, desde os conjuntos não ordenados, você não pode fazer suposições sobre o orderin que você visite os elementos do conjunto:

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

    Conjunto de compreensões:Como listas e dicionários, podemos facilmente construir conjuntos usando o conjunto de compreensões:

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

    as Tuplas

    Uma tupla é um (imutável) lista ordenada de valores.,Uma tupla é de muitas maneiras semelhante a uma lista; uma das diferenças mais importantes é que as superfícies podem ser usadas como chaves em dicionários e como elementos de conjuntos, enquanto as listas não podem.Aqui está um exemplo trivial:

    a documentação tem mais informações sobre tuplas.

    funções

    funções Python são definidas usando a palavra-chave def. Por exemplo:

    iremos definir muitas vezes funções para usar argumentos opcionais de palavras-chave, como por exemplo:

    Existe muito mais informação sobre funcionalidades em Python na documentação.,

    Classes

    a sintaxe para definir classes em Python é simples:

    pode ler muito mais sobre as classes Python na documentação.

    Numpy

    Numpy é a biblioteca central da computação científica em Python.It fornece um objeto de array multidimensional de alto desempenho, e ferramentas para trabalhar com essas raias. Se você já está familiarizado com MATLAB, você pode encontrar este tutorial útil para começar com Numpy.

    Arrays

    uma matriz numpy é uma grade de Valores, todos do mesmo tipo, e é indexada por uma tupla de inteiros não negativos., O número de dimensões é o grau da matriz; a forma de uma matriz é uma tupla de inteiros dando o tamanho da matriz ao longo de cada dimensão.

    Podemos inicializar matrizes numpy a partir de listas de Python aninhadas, e os elementos de acesso usando parêntesis rectos:

    Numpy também fornece muitas funções para criar matrizes:

    pode ler sobre outros métodos de criação de array na documentação.

    indexação de Array

    Numpy oferece várias maneiras de Indexar em arrays.Slicing: semelhante às listas Python, matrizes numpy podem ser fatiadas.,Uma vez que as matrizes podem ser multidimensionais, você deve indicar uma fatia para cada dimensão da matriz:

    Você também pode misturar indexação de inteiros com indexação de fatias.No entanto, ao fazê-lo irá produzir uma matriz de classificação mais baixa do que a matriz original.Note que isto é bastante diferente da forma como o MATLAB lida com arrayslicing:

    indexação de array inteiro:quando você indexa em matrizes numpy usando a fatiagem, a vista resultante da matriz será sempre uma subarray da matriz original. Em contraste, a indexação de conjuntos inteiros permite-lhe construir arrays arbitrários usando os dados de outro array., Aqui está um exemplo:

    Um truque útil com indexação de números inteiros é selecionar ou mutar um elemento de cada linha de uma matriz:

    indexação da matriz booleana:a indexação da matriz booleana permite-lhe escolher elementos arbitrários de uma matriz.Frequentemente este tipo de indexação é usado para selecionar os elementos de uma arraythat que satisfazem alguma condição. Aqui está um exemplo:

    para a brevidade, deixámos de fora muitos detalhes sobre a indexação de listas numpy; se quiser saber mais, deverá ler a documentação.

    Datatypes

    cada lista de numpy é uma grelha de elementos do mesmo tipo.,O Numpy oferece um grande conjunto de tipos de dados numéricos que pode usar para construir arrays.Numpy tenta adivinhar um tipo de dados quando você cria um array, mas as funções que constructarrays normalmente também incluem um argumento opcional para especificar explicitamente o tipo de dados.Aqui está um exemplo:

    Você pode ler tudo sobre os tipos de dados numpy na documentação.,

    Array de matemática

    matemáticas Básicas funções operam elementwise em matrizes, e são availableboth como operador de sobrecargas e, como funções o numpy módulo:

    Note que ao contrário do MATLAB, * é elementwise multiplicação, não matrixmultiplication. Em vez disso, usamos a função dot para computar produtos internos de vetores, para multiplicar um Vetor por uma matriz, e tomultiplicar matrizes., dot está disponível tanto como uma função no numpymodule e como um método de instância da matriz de objetos:

    Numpy fornece várias funções úteis para a realização de cálculos onarrays; um dos mais úteis é sum:

    Você pode encontrar a lista completa de funções matemáticas fornecidas pelo numpyin a documentação.

    para além de computar funções matemáticas usando arrays, é frequente reformular ou manipular dados em arrays., O exemplo mais simples deste tipo de operação é a transposição de uma matriz; para transpor uma matriz,basta usar o T atributo de um objeto array:

    Numpy fornece muitas mais funções para manipular arrays; você pode ver a listagem completa da documentação.

    radiodifusão

    radiodifusão é um mecanismo poderoso que permite que numpy trabalhe com matrizes de diferentes paisagens ao realizar operações aritméticas. Frequentemente temos um array menor e array alarger, e queremos usar o array menor várias vezes para realizar alguma operação no array maior.,

    por exemplo, suponha que queremos adicionar um vetor constante a eachrow de uma matriz. Nós poderíamos fazê-lo assim:

    isto funciona; no entanto, quando a matriz x é muito grande, computando um Python loopin explícito pode ser lento. Observe que adicionar o vector v para cada linha da matrizx é equivalente à formação de uma matriz vv pelo empilhamento de várias cópias de v verticalmente,em seguida, executar elementwise soma x e vv., Nós poderíamos implementar esta abordagem como esta:

    Numpy broadcasting permite-nos realizar este cálculo sem realmente criar múltiplas cópias de v., Considere esta versão, usando de radiodifusão:

    linha y = x + v funciona mesmo que x forma (4, 3) e v forma(3,) devido à radiodifusão; esta linha funciona como se v na verdade tinha a forma (4, 3),onde cada linha era uma cópia de v, e a soma foi realizada elementwise.,

    Broadcasting two arrays together follows these rules:

    1. If the arrays do not have the same rank, prepend the shape of the lower rank arraywith 1s until both shapes have the same length.
    2. as duas matrizes são consideradas compatíveis em uma dimensão se elas têm o samesize na dimensão, ou se uma das matrizes tem o tamanho 1 nessa dimensão.
    3. As matrizes podem ser transmitidas juntas se forem compatíveis em todas as dimensões.
    4. Após a transmissão, cada array se comporta como se tivesse forma igual ao elementwisemaximum de formas das duas matrizes de entrada.,
    5. Em Qualquer dimensão em que um array tivesse Tamanho 1 e o outro array tivesse tamanho maior que 1,o primeiro array comporta-se como se tivesse sido copiado ao longo dessa dimensão

    Se esta explicação não fizer sentido, tente ler a explicação do documento ou desta explicação.funções que suportam a radiodifusão são conhecidas como funções universais. Você pode encontrar a lista de todas as funcionalidades universais na documentação.,

    Aqui estão algumas aplicações de radiodifusão:

    radiodifusão normalmente torna o seu código mais conciso e mais rápido, por isso você deve se esforçar para usá-lo sempre que possível.

    Numpy Documentação

    Esta breve visão geral tocou em muitas das coisas importantes que você precisa toknow sobre numpy, mas está longe de ser completa. Confira então o pedido para saber muito mais sobre o numpy.

    SciPy

    Numpy fornece um array multidimensional de alto desempenho e ferramentas básicas para completar e manipular estas matrizes.,O SCIP baseia-se nisto e proporciona um grande número de funções que funcionam em matrizes numpy e são úteis para diferentes tipos de aplicações científicas e de engenharia.

    A melhor maneira de se familiarizar com o SciPy é adquirir a documentação.Vamos destacar algumas partes do SciPy que você pode achar útil para esta classe.

    operações de imagem

    SciPy fornece algumas funções básicas para trabalhar com imagens.Por exemplo,ele tem funções para ler imagens do disco em matrizes numpy, para escrever matrizes numpy para o disco como imagens, e para redimensionar imagens.,Aqui está um exemplo simples que mostra estas funções:

    Left: a imagem original. Direita: a imagem colorida e redimensionada.

    ficheiros MATLAB

    as funçõesscipy.io.loadmat escipy.io.savemat permitem-lhe ler e escrever ficheiros MATLAB. Você pode ler sobre eles na documentação.

    distância entre pontos

    SciPy define algumas funções úteis para calcular distâncias entre conjuntos de pontos.,

    a função scipy.spatial.distance.pdist calcula a distância entre todos os pares de pontos num dado Conjunto:

    pode ler todos os detalhes sobre esta função na documentação.

    uma função similar (scipy.spatial.distance.cdist) calcula a distância entre todos os pares em dois conjuntos de pontos; pode ler sobre a sua documentação.

    Matplotlib

    Matplotlib é uma representação gráfica library.In esta seção dá uma breve introdução ao módulo , que fornece um sistema de plotagem semelhante ao do MATLAB.,

    Plotting

    a função mais importante no matplotlib é ,o que lhe permite traçar dados 2D. Aqui está um exemplo simples:

    com este código produz o seguinte enredo:

    Com apenas um pouco de trabalho extra, podemos facilmente traçar múltiplos linesat uma vez, e adicione um título, legenda e rótulos do eixo:

    Você pode ler muito mais sobre o plot functionin a documentação.,

    sublotes

    pode desenhar diferentes coisas na mesma figura usando a funçãosubplot.Aqui está um exemplo:

    Você pode ler muito mais sobre o subplot functionin a documentação.

    imagens

    pode usar a função imshow para mostrar imagens. Aqui está um exemplo:

    Share

    Deixe uma resposta

    O seu endereço de email não será publicado. Campos obrigatórios marcados com *