Vetores, m,atrizes e a NumPy

4acc58a03aa964e2f04b538836f2d468?s=47 Paulo Bordoni
September 03, 2013

Vetores, m,atrizes e a NumPy

Apresentação do ambiente de trabalho, o Spyder, e uma introdução à biblioteca NumPy - Numerical Python.

4acc58a03aa964e2f04b538836f2d468?s=128

Paulo Bordoni

September 03, 2013
Tweet

Transcript

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

    Bordoni UFRJ
  2. Já está na hora de começar com a Álgebra linear

    computacional. Vamos usar o Python(x,y) com a Spyder como interface. Se você ainda não instalou o Python(x,y), faça-o agora. As instruções estão nas transparências “Cálculo numérico, com meus óculos”. Começaremos pela Spyder, que vem com o Python(x,y).
  3. É só clicar no ícone para abrir a Spyder.

  4. Surfista e Loirinha, vocês podem buscar mais informações no endereço

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

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

    OS X
  7. Possui um editor de código poderoso

  8. 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.
  9. A possibilidade de examinar e editar variáveis.

  10. A possibilidade de acessar a ajuda online e inspecionar objetos.

  11. E, vejam só: uma série de outras facilidades.

  12. Um exemplo do ambiente!

  13. Agora vamos ao NumPy. NumPy: uma abreviação para Numerical Python.

    Já vem com o Python(x,y).
  14. A documentação de Python(x,y) é muito boa! Eis como acessar

    o Manuel do NumPy.
  15. Basta clicar ali para abrir o Manual do módulo NumPy.

  16. 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.
  17. A cara do dois, do Guia do usuário e da

    Referência
  18. Este é o índice completo do Guia do usuário. Precisaremos

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

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

    Numpy há material para muito mais que um curso introdutório.
  21. 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.
  22. Adivinhando seu pensamento Loirinha, vamos descobrir o que é NumPy.

  23. Sim Sherlock, o que é o NumPy?

  24. Loirinha, agora é sua vez de vestir-se a rigor. Vamos

    te apresentar ao cara mais importante de NumPy. Capriche!
  25. Loirinha, tenho a honra e o prazer de te apresentar

    o objeto ndarray! Caprichei, Mestra! Mas é um homem-objeto?
  26. Bem, você precisará conhece-lo mais profundamente. Mas, de cara, fique

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

    array. É importante mesmo!
  28. Fiquei interessada. Desejo conhecê-lo mais!

  29. Quais são seus atributos ndarray? E seus métodos? Onde, como

    e quando nasceu? 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. Elas possuem atributos e métodos. Cada indivíduo (objeto) de uma classe é criado com a personalização os seus atributos e métodos.
  30. Loirinha, peça ao Manuel para te contar mais. Ele conhece

    o ndarray profundamente. Sugiro esta listinha de perguntas!
  31. Quando cliquei no link (o 1º da listinha da Mestra),

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

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

    criação de arrays. Concordo Mestra, bastam as amigáveis.
  35. Pois é minha filha, vamos encerrar o baile 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!
  36. Ok, Mestra. Vou ensinar nossos pupilos a fazer mágicas. Mágicas

    Mestre? Tá brincando...
  37. Hogwarts Dumbledore Cautela Mestre. A magia é proibida para muggles

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

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

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

  41. A magia da conversão:

  42. Tentando converter uma lista num ndarray A ajuda do ambiente!

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

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

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

    estão as informações.
  46. Estes outros atributos que tem a ver mais diretamente com

    a disposição na memória de um ndarray. Surfista, só tente entender flags e strides depois de ler o texto ao final deste conjunto de slides.
  47. Já estes dois são muito simples!

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

    lista de listas
  50. Agora um array 3d.

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

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

    array. Pode ser um desses:
  55. 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++). Não deixem de ler o texto ao final deste conjunto de transparências.
  56. Existem muitas outras “rotinas” para criação de ndarrays. Vejam:

  57. Agora as “rotinas” especializadas na criação de sequências numéricas. As

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

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

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

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

    retornados:
  63. Exemplos de código.

  64. Usaremos a linspace( ). Também veremos a vetorização e a

    difusão em ação. Nós temos mágica, para fazer ...
  65. 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!
  66. 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?
  67. Na próxima transparência vou reescrever, em Python comum, a parte

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

    a difusão!
  69. O Professor Albus Percival Wulfric Brian Dumbledore Nossos alunos precisam

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

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

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

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

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

    2ª sobre diagonal Mais arrays especiais
  75. Como criar um array identidade 2d. No exemplo um 3x3:

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

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

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

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

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

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

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

    triangular superior U (de upper) e sua parte triangular inferior (L de lower).
  83. Tchau, até a próxima aula!

  84. Antes de encerrar esta aula, umas dicas para quem já

    brincou com o MatLab.
  85. TesAuro ou TesOuro?

  86. Onde buscar.

  87. Copyright...

  88. O endereço

  89. A leitura a seguir ajudará a compreender melhor a estrutura

    interna de um array. Recortei-a do livro do Travis L. Oliphant
  90. Pag. 1

  91. Pag. 2

  92. Pag. 3

  93. Pag. 4

  94. Pag. 5 Stride = passo

  95. Pag. 6

  96. Pag. final

  97. Mais uma vez, até a próxima aula!