Buscar

CalcNum05 Vetores matrizes e NumPy

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!

Continue navegando