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

Vetores, matrizes e a NumPy

Vetores, matrizes e a NumPy

Paulo Bordoni

March 18, 2019
Tweet

More Decks by Paulo Bordoni

Other Decks in Education

Transcript

  1. Tanto Python(x,y) como Anaconda permitem usar a Spyder. Vamos começar

    examinando a Spyder, uma IDE (Interface Development Environment) extremamente facilitadora.
  2. Um bom lugar para buscar respostas para aquelas perguntas difíceis

    sobre Python, NumPy, SciPy, MatPlotLib é a Stack Overflow:
  3. 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.
  4. 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!
  5. Loirinha, tenho a honra e o prazer de te apresentar

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

    sabendo que: Mestre, prometo que farei o possível...
  7. 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?
  8. 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! )
  9. Loirinha, peça ao Manuel para te contar mais sobre essa

    classe. Ele conhece a ndarray profundamente. Sugiro esta listinha de perguntas!
  10. 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.
  11. Esta é a lista de todas as rotinas amigáveis para

    criação de arrays. Concordo Mestra, bastam as amigáveis.
  12. Pois é meus filhos, 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!
  13. Hogwarts Dumbledore Cautela Mestre. A magia é proibida para muggles

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

    vários outros atributos e métodos, que veremos à medida que formos usando.
  15. 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”
  16. 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!
  17. No detalhe: 3 listas com 2 elementos 4 listas com

    3 elementos Matriz 3 × 2 Matriz 4 × 3
  18. 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.
  19. 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.
  20. O dtype é o tipo de dado dos elementos do

    array. Pode ser um desses:
  21. 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++).
  22. arange() é a irmã mais nova e importantíssima da função

    range() que vocês já usaram muito em Python.
  23. 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.
  24. Nós temos mágica, para fazer ... Usaremos a linspace(). Vou

    aproveitar para mostrar a vetorização e a difusão em ação.
  25. 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!
  26. 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?
  27. Na próxima transparência vou reescrever, em Python comum, a parte

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

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

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

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

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

    triangular superior U (de upper) e sua parte triangular inferior (L de lower).
  33. 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
  34. 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.
  35. Mestres, por enquanto basta. É muita coisa nova! Deixem o

    aprofundamento sobre matrizes para depois. Ok filhote! Desta 1ª vez deixaremos barato.