Vetores, matrizes e a NumPy

Vetores, matrizes e a NumPy

4acc58a03aa964e2f04b538836f2d468?s=128

Paulo Bordoni

March 18, 2019
Tweet

Transcript

  1. LNCC Vetores, matrizes e a NumPy Prof. Paulo R. G.

    Bordoni UFRJ
  2. Surfistas, Loirinhas e Cabelos de Fogo, vamos começar do começo.

  3. Digite scipy.org na busca do Google: Em seguida clique ali

    onde marquei:
  4. Cheguei aqui, Mestra! Agora escolha documentation

  5. E, nessa lista de documentação para os pacotes científicos de

    Python, escolha Numpy.
  6. O Mestre mandou separar o que você vai usar no

    1º contato.
  7. O guia do usuário é para principiantes.

  8. Aqui na Referência tem tudo em detalhe:

  9. O índice alfabético e a busca por palavra-chave.

  10. O glossário e o conteúdo completo do manual

  11. É sempre bom pedir ajuda ao Google

  12. Grande dica Manuel, vou baixar para estudar!

  13. Voltando ao início, clique em Install para baixar e instalar

    tudo o que você vai precisar.
  14. Se você tem um Mac, escolha Anaconda. Para Windows e

    Ubuntu escolha Python(x,y).
  15. Vá à luta colega, não se intimide.

  16. Somos poderosas, vou instalar 1º que você, Surfista!

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

    examinando a Spyder, uma IDE (Interface Development Environment) extremamente facilitadora.
  18. Carregue a Python(x,y) e clique no ícone marcado para abrir

    a Spyder.
  19. Com Anaconda é só chamar o “Launcher” e carregar a

    spyder-app.
  20. Surfista e Loirinha, vocês podem buscar mais informações no endereço

    abaixo. O nome Spyder é um acrônimo.
  21. A Spyder é uma excelente IDE de código aberto e

    roda em todas as plataformas!
  22. Vejam a cara da Spyder no Windows, Linux e Mac

    OS X
  23. Agora vamos à NumPy. Numpy é uma abreviação para Numerical

    Python.
  24. Adivinhando seu pensamento Loirinha, vamos descobrir o que é NumPy.

  25. Sim Sherlock, o que é o NumPy?

  26. Um bom lugar para buscar respostas para aquelas perguntas difíceis

    sobre Python, NumPy, SciPy, MatPlotLib é a Stack Overflow:
  27. 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.
  28. Que maravilha Mestre! O Municipal ficou lindo depois da reforma.

  29. 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!
  30. Loirinha, tenho a honra e o prazer de te apresentar

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

    sabendo que: Mestre, prometo que farei o possível...
  32. Mestre, esse ndarray ocupa o 1º lugar entre os objetos

    array. É importante mesmo!
  33. 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?
  34. 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! )
  35. Loirinha, peça ao Manuel para te contar mais sobre essa

    classe. Ele conhece a ndarray profundamente. Sugiro esta listinha de perguntas!
  36. Quando cliquei no link (o 1º da listinha da Mestra),

    o Manuel mostrou o seguinte:
  37. 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.
  38. As informações sobre o construtor de “baixo nível”: Não iremos

    utilizá-lo muito.
  39. Esta é a lista de todas as rotinas amigáveis para

    criação de arrays. Concordo Mestra, bastam as amigáveis.
  40. 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!
  41. Mágicas Mestre? Tá brincando... Ok, Mestra. Então vou ensinar nossos

    pupilos a fazer mágicas.
  42. Hogwarts Dumbledore Cautela Mestre. A magia é proibida para muggles

    (e alunos de graduação...) Vou iniciar meus pupilos em magias de NumPy!
  43. A 1ª grande magia de NumPy é a vetorização.

  44. Nunca cutuque um dragão adormecido Uma 2ª magia, poderosíssima, é

    a difusão É da Hermione
  45. O 1º passo é aprender a criar arrays.

  46. A magia da conversão:

  47. Tentando converter uma lista num ndarray! Errou! Mas a Numpy

    ajuda.
  48. Corrigindo o erro e obtendo informações. Ih!! Que termos são

    esses: shape, ndim, size?
  49. São atributos da classe ndarray. Recortei só esses 3. Existem

    vários outros atributos e métodos, que veremos à medida que formos usando.
  50. Inclusive com exemplos! O Mestre clicou nos links e cá

    estão as informações.
  51. 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”
  52. Já estes dois são muito simples!

  53. 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!
  54. Agora sim! Criando um array 2d, pela conversão de uma

    lista de listas
  55. No detalhe: 3 listas com 2 elementos 4 listas com

    3 elementos Matriz 3 × 2 Matriz 4 × 3
  56. Agora um array 3d.

  57. 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.
  58. 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.
  59. A continuação... Dois parâmetros merecem mais explicações, dadas a seguir.

  60. O dtype é o tipo de dado dos elementos do

    array. Pode ser um desses:
  61. 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++).
  62. Agora as “rotinas” especializadas na criação de sequências numéricas. As

    “numerical ranges”.
  63. arange() é a irmã mais nova e importantíssima da função

    range() que vocês já usaram muito em Python.
  64. Os parâmetros em arange()

  65. 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.
  66. Uma irmã da função arange() é a função linspace().

  67. Esses são os parâmetros da linspace() e os possíveis valores

    retornados:
  68. Exemplos de código.

  69. Nós temos mágica, para fazer ... Usaremos a linspace(). Vou

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

    do código que marquei Sem vetorização e difusão.
  73. Foi necessário o triplo de linhas. Viva a vetorização e

    a difusão!
  74. Outra função facilitadora é a ℎ( ). Ela recebe dois

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

    ℎ(, ) produzindo os arrays e . Então eu calculo os pares ordenados (, ) ∈ × .
  76. Esse é o código:

  77. Os detalhes sobre a meshgrid( ):

  78. Mais detalhes:

  79. Alguns exemplos:

  80. O Professor Albus Percival Wulfric Brian Dumbledore Nossos alunos precisam

    aprender mais magias de criação do NumPy!
  81. Estas outras “rotinas” criam arrays particulares:

  82. Para mais informações sobre cada “rotina”, basta clicar no seu

    link.
  83. A, array 2x3 de 1’s B, array 2x3 de 0’s

    São arrays especiais
  84. Para criar um array parecido com um outro, já conhecido.

  85. I, array identidade 3x3 E, array 4x3 com 1’s na

    “diagonal” Mais arrays especiais
  86. Como criar um array identidade 2d. No exemplo um 3x3:

  87. Como criar um array 2d eye. No exemplo um 4x3:

  88. Apesar do título, estas outras “rotinas” constroem arrays com características

    especiais.
  89. É só clicar no link. Matrizes de Vandermonde surgem naturalmente

    em problemas de interpolação.
  90. Criando “matrizes” diagonais: No próximo exemplo vamos criar uma matriz

    de Vandermonde 4x4 e depois extrair sua diagonal.
  91. Eis como criar a famosa matriz de Vandermonde e mostrar

    suas diagonais.
  92. Matrizes triangulares desempenharão um papel fundamental no curso.

  93. Criaremos uma matriz A, 4x4, e outras duas: sua parte

    triangular superior U (de upper) e sua parte triangular inferior (L de lower).
  94. Até a próxima aula!

  95. 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
  96. 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.
  97. Aqui inicia a lista de métodos de matrix.

  98. Calma, Surfista, eles são poucos!

  99. Ainda bem, porque eu contei só 59 Mr. Smith! 59º

  100. Mestres, por enquanto basta. É muita coisa nova! Deixem o

    aprofundamento sobre matrizes para depois. Ok filhote! Desta 1ª vez deixaremos barato.
  101. Mais uma vez, até a próxima aula!