Upgrade to Pro — share decks privately, control downloads, hide ads and more …

Vetores, matrizes e a NumPY

Vetores, matrizes e a NumPY

Paulo Bordoni

August 23, 2018
Tweet

More Decks by Paulo Bordoni

Other Decks in Education

Transcript

  1. Neste conjunto de transparências veremos a NumPy (Numerical Python), que

    será nossa ferramenta de trabalho, como a luneta foi para Galileu.
  2. Se você ainda não instalou Python(x,y) ou Anaconda, faça isto

    agora! As instruções de instalação estão na parte final de “Calculo Numérico com meus óculos”.
  3. Tanto Python(x,y) como Anaconda permitem usar a Spyder. Vamos começar

    examinando a Spyder, uma IDE (Interface Development Environment) extremamente facilitadora.
  4. Você pode criar um arquivo .py, executá-lo e ver o

    resultado ao lado, no Console. Ou executar duas ou três linhas diretamente no Console.
  5. No Manuel temos o Guia do usuário, onde é ensinado

    o básico. Na Referência cada função, objeto ou módulo é descrito detalhadamente.
  6. Este é o índice completo do Guia do usuário. Precisaremos

    só de partes da introdução e do básico de Numpy.
  7. Este é o início do índice completo da Referência ao

    NumPy. Usaremos apenas parte desse conteúdo.
  8. Continuação do Índice. Acalme-se Surfista - não veremos tudo. Na

    Numpy há material para muito mais que um curso introdutório.
  9. Apenas para completar, esta é parte final do Índice. São

    tópicos mais avançados. Fiz questão de mostrar o agradecimento ao Travis L. Oliphant.
  10. Um bom lugar para buscar respostas para aquelas perguntas difíceis

    sobre Python, NumPy, SciPy, MatPlotLib é a Stack Overflow:
  11. Loirinha, vista-se a rigor. Vou te levar à temporada de

    2015 do Theatro Municipal para assistir a única apresentação do ator mais importante da Numpy.
  12. Você também está linda Loirinha. Ficará deslumbrada com ele, como

    eu já fiquei, há muito tempo atrás. É muito belo e poderoso! Mestra, você o conheceu? Quem diria!
  13. Loirinha, tenho a honra e o prazer de te apresentar

    o objeto ndarray! Um homem-objeto, Mestre?
  14. Bem, você precisará conhecê-lo mais profundamente. Mas, de cara, fique

    sabendo que: Mestre, prometo que farei o possível...
  15. Métodos • f( ) • g( ) • ⋅⋅⋅ Atributos

    • aaa • bbb • ⋅⋅⋅ Classe Abc Calma minha filha, ele é tímido! Mas, recordando Python: uma classe é um padrão para criação para seus objetos. Classes possuem atributos e métodos. Cada indivíduo (objeto) de uma classe é criado com a personalização os seus atributos e métodos. Quais são seus atributos ndarray? E seus métodos? Onde, como e quando nasceu?
  16. métodos • Latir( ) • Comer( ) • Lamber( )

    • ... atributos: • Nome • Raça • Sexo • Cor do pelo • ... classe: Cachorro Lembro perfeitamente do exemplo da classe cachorro dada pelo Mestre: Eu também. Meu cachorro é o Rex, um pastor alemão, macho, ... . Um objeto (gxh) da classe cachorro. ( gxh = detesto dizer que Rex é um objeto! )
  17. Loirinha, peça ao Manuel para te contar mais sobre essa

    classe. Ele conhece a ndarray profundamente. Sugiro esta listinha de perguntas!
  18. Toda classe possui um ou mais construtores. Usualmente eles são

    invocados através do nome da classe Com os ndarrays não é diferente. Entretanto, além desses construtores de “baixo nível”, a NumPy oferece outros construtores, mais amigáveis.
  19. Esta é a lista de todas as rotinas amigáveis para

    criação de arrays. Concordo Mestra, bastam as amigáveis.
  20. Pois é minha filha, vamos sair do Municipal e ir

    para a UFRJ porque há muita coisa a aprender. Mestres, estou ficando confusa com tanta informação. Minha amiga tem razão, tornem as coisas mais práticas!
  21. Hogwarts Dumbledore Cautela Mestre. A magia é proibida para muggles

    (e alunos de graduação...) Vou iniciar meus pupilos em magias de NumPy!
  22. São atributos da classe ndarray. Recortei só esses 3. Existem

    vários outros atributos e métodos, que veremos à medida que formos usando.
  23. Estes são outros atributos mais diretamente associados com a estrutura

    de memória de um ndarray. Surfista, só tente entender flags e strides depois de ler “NumPy – Leitura complementar”
  24. Mas, para mim, ainda não estão claras as diferenças entre

    shape, ndim e size e você acrescenta mais 2! Calma, faremos mais exemplos!
  25. Não vejo aplicações práticas para um array 3d, Mestre! Ora,

    pense numa Biblioteca. Ela possui estantes, as estantes tem prateleiras, nas prateleiras há livros. Surfista e Loirinha, repitam esses programas usando tuplas no lugar de listas.
  26. Nos 3 exemplos só utilizamos o 1º parâmetro – object

    – que é obrigatório. Os outros parâmetros são opcionais, já pré- definidos por NumPy. Leia abaixo uma explicação para cada um.
  27. O dtype é o tipo de dado dos elementos do

    array. Pode ser um desses:
  28. O parâmetro “order”. No caso de arrays 2d, ele estabelece

    se o array será armazenado na memória por colunas (como FORTAN) ou por linhas (como C e C++).
  29. arange() é a irmã mais nova e importantíssima da função

    range() que vocês já usaram muito em Python.
  30. Uma diferença entre as duas funções é que arange() não

    opera apenas com números inteiros. Uma outra é que arange() retorna um ndarray e não uma lista.
  31. Nós temos mágica, para fazer ... Usaremos a linspace(). Vou

    aproveitar para mostrar a vetorização e a difusão em ação.
  32. x é um vetor com 10 valores igualmente espaçados de

    0 a π (incluíndo-os). y é o vetor obtido aplicando a função f diretamente ao vetor x Observe os vetores x e y! Neles está a magia da vetorização e difusão!
  33. A mesma coisa que o zipper de sua calça jeans

    faz, Loirinha. Junta os elementos correspondentes de cada um dos vetores, x e y num novo vetor z cujos elementos z k são as tuplas z k = ( x k , y k ) Nunca ví essa função zip(x,y). O que ela faz, Mestra?
  34. Na próxima transparência vou reescrever, em Python comum, a parte

    do código que marquei Sem vetorização e difusão.
  35. Outra função facilitadora é a ℎ( ). Ela recebe dois

    vetores e e retorna o produto cartesiano × deles. Acompanhem meu exemplo:
  36. Meu programa gera dois vetores e , usa a função

    ℎ(, ) produzindo os arrays e . Então eu calculo os pares ordenados (, ) ∈ × .
  37. I, array identidade 3x3 E, array 4x3 com 1’s na

    2ª sobre diagonal Mais arrays especiais
  38. Criando “matrizes” diagonais: No próximo exemplo vamos criar uma matriz

    de Vandermonde 4x4 e depois extrair sua diagonal.
  39. Criaremos uma matriz A, 4x4, e outras duas: sua parte

    triangular superior U (de upper) e sua parte triangular inferior (L de lower).
  40. Por completude e antes que você pergunte Surfista imediatista, observo

    que além da classe ndarrays a NumPy também oferece a classe matrix. Apêndice 1
  41. O Neo informa que os objetos da classe matrix são

    arrays 2d especializados. O numpy nos oferece matrix para lidarmos com vetores e matrizes. É uma porta de entrada para a Álgebra linear computacional.
  42. Mestres, por enquanto basta. É muita coisa nova! Deixem o

    aprofundamento sobre matrizes para depois. Ok filhote! Desta 1ª vez deixaremos barato.
  43. A leitura a seguir ajudará a compreender melhor a estrutura

    interna de um array. Recortei-a do livro do Travis L. Oliphant. Apêndice 3
  44. • Apresentando a Spyder; • Apresentando NumPy: • O que

    é a NumPy? • Guia do usuário e de referência; • Definição de ndarray (array = vetor ou matriz ou ...): • Atributos básicos, tipos de dados e métodos; • Criando ndarrays a partir de listas e tuplas; • As magias da vetorização e da difusão; • Criando ndarrays com características específicas: • arange, linspace, logspace e meshgrid; • zeros, ones, identity, diag, eye; • tri, triu, tril, vandermonde; • Apêndice 1: A classe Matrix; • Apêndice 2: NumPy para usuários da MatLab; • Apêndice 3: Layout de um Ndarray na memória. Neste conjunto de transparências estudamos a parte básica da Numpy. Eis um resumo do que vimos: