Baixe o app para aproveitar ainda mais
Prévia do material em texto
LNCC Vetores, matrizes e a NumPy Prof. Paulo R. G. Bordoni UFRJ 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). É só clicar no ícone para abrir a Spyder. Surfista e Loirinha, vocês podem buscar mais informações no endereço abaixo. O nome Spyder é um acrônimo. A Spyder é uma excelente IDE de código aberto e roda em todas as plataformas! Vejam a cara da Spyder no Windows, Linux e Mac OS X Possui um editor de código poderoso 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. A possibilidade de examinar e editar variáveis. A possibilidade de acessar a ajuda online e inspecionar objetos. E, vejam só: uma série de outras facilidades. Um exemplo do ambiente! Agora vamos ao NumPy. NumPy: uma abreviação para Numerical Python. Já vem com o Python(x,y). A documentação de Python(x,y) é muito boa! Eis como acessar o Manuel do NumPy. Basta clicar ali para abrir o Manual do módulo NumPy. 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. A cara do dois, do Guia do usuário e da Referência Este é o índice completo do Guia do usuário. Precisaremos só de partes da introdução e do básico de Numpy. Este é o início do índice completo da Referência ao NumPy. Usaremos apenas parte desse conteúdo. Continuação do Índice. Acalme-se Surfista - não veremos tudo. No Numpy há material para muito mais que um curso introdutório. 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. Adivinhando seu pensamento Loirinha, vamos descobrir o que é NumPy. Sim Sherlock, o que é o NumPy? Loirinha, agora é sua vez de vestir-se a rigor. Vamos te apresentar ao cara mais importante de NumPy. Capriche! Loirinha, tenho a honra e o prazer de te apresentar o objeto ndarray! Caprichei, Mestra! Mas é um homem-objeto? Bem, você precisará conhece-lo mais profundamente. Mas, de cara, fique sabendo que: Mestre, prometo que farei o possível... Mestre, esse ndarray ocupa o 1º lugar entre os objetos array. É importante mesmo! Fiquei interessada. Desejo conhecê-lo mais! 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. Loirinha, peça ao Manuel para te contar mais. Ele conhece o ndarray profundamente. Sugiro esta listinha de perguntas! Quando cliquei no link (o 1º da listinha da Mestra), o Manuel mostrou o seguinte: 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. As informações sobre o construtor de “baixo nível”: Não iremos utilizá-lo. Esta é a lista de todas as rotinas amigáveis para criação de arrays. Concordo Mestra, bastam as amigáveis. 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! Ok, Mestra. Vou ensinar nossos pupilos a fazer mágicas. Mágicas Mestre? Tá brincando... Hogwarts Dumbledore Cautela Mestre. A magia é proibida para muggles (e alunos de graduação...) Vou iniciar meus pupilos em magias de NumPy! A 1ª grande magia de NumPy é a vetorização. Nunca cutuque um dragão adormecido Uma 2ª magia, poderosíssima, é a difusão É da Hermione O 1º passo é aprender a criar arrays. A magia da conversão: Tentando converter uma lista num ndarray A ajuda do ambiente! Corrigindo o erro e obtendo informações. Ih!! Que termos são esses: shape, ndim, size? São atributos da classe ndarray. Recortei só esses 3. Existem vários outros atributos e métodos, que veremos à medida que formos usando. Inclusive com exemplos! O Mestre clicou nos links e cá estão as informações. 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. Já estes dois são muito simples! 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! Agora sim! Criando um array 2d, pela conversão de uma lista de listas Agora um array 3d. 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. 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. A continuação... Dois parâmetros merecem mais explicações, dadas a seguir. O dtype é o tipo de dado dos elementos do array. Pode ser um desses: 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. Existem muitas outras “rotinas” para criação de ndarrays. Vejam: Agora as “rotinas” especializadas na criação de sequências numéricas. As “numerical ranges”. arange() é a irmã mais nova e importantíssima da função range() que vocês já usaram muito em Python. Os parâmetros em arange() 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. Uma irmã da função arange() é a função linspace(). Esses são os parâmetros da linspace() e os possíveis valores retornados: Exemplos de código. Usaremos a linspace( ). Também veremos a vetorização e a difusão em ação. Nós temos mágica, para fazer ... 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! 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 zk são as tuplaszk = ( xk , yk ) Nunca ví essa função zip(x,y). O que ela faz, Mestra? Na próxima transparência vou reescrever, em Python comum, a parte do código que marquei Sem vetorização e difusão. Foi necessário o triplo de linhas. Viva a vetorização e a difusão! O Professor Albus Percival Wulfric Brian Dumbledore Nossos alunos precisam aprender mais magias de criação do NumPy! Estas outras “rotinas” criam arrays particulares: Para mais informações sobre cada “rotina”, basta clicar no seu link. A, array 2x3 de 1’s B, array 2x3 de 0’s São arrays especiais Para criar um array parecido com um outro, já conhecido. I, array identidade 3x3 E, array 4x3 com 1’s na 2ª sobre diagonal Mais arrays especiais Como criar um array identidade 2d. No exemplo um 3x3: Como criar um array 2d eye. No exemplo um 4x3: Apesar do título, estas outras “rotinas” constroem arrays com características especiais. É só clicar no link. Matrizes de Vandermonde surgem naturalmente em problemas de interpolação. Criando “matrizes” diagonais: No próximo exemplo vamos criar uma matriz de Vandermonde 4x4 e depois extrair sua diagonal. Eis como criar a famosa matriz de Vandermonde e mostrar suas diagonais. Matrizes triangulares desempenharão um papel fundamental no curso. Criaremos uma matriz A, 4x4, e outras duas: sua parte triangular superior U (de upper) e sua parte triangular inferior (L de lower). Tchau, até a próxima aula! Antes de encerrar esta aula, umas dicas para quem já brincou com o MatLab. TesAuro ou TesOuro? Onde buscar. Copyright... O endereço A leitura a seguir ajudará a compreender melhor a estrutura interna de um array. Recortei-a do livro do Travis L. Oliphant Pag. 1 Pag. 2 Pag. 3 Pag. 4 Pag. 5 Stride = passo Pag. 6 Pag. final Mais uma vez, até a próxima aula!
Compartilhar