KEMBAR78
Computação Científica com SciPy - Brevíssimo Tutorial | PDF
SciPy é software open source voltado para
matemáticos, engenheiros e cientistas em geral
  http://www.scipy.org/

  Ideal para computação científica

   Matemática avançada, processamento de sinais,
  otimização, estatística, etc.

  Extensão da linguagem Python

    Utiliza também as extensões Numpy e MatplotLib
é uma linguagem interpretada, interativa,
funcional, orientada a objetos, dinamicamente
tipada e com gerenciamento automático de
memória

  Similar, em certos aspectos, a Perl, Ruby, Scheme,
 Smalltalk e Tcl
Numpy define vetores/matrizes numéricas e
operações sobre os mesmos

  http://numpy.scipy.org/

  Alta performance

    Manipular arrays de Numpy é muito mais rápido que
  listas nativas de Python
Exemplo: Python puro x Numpy
Intel i5-2400 3.10 GHz, 4 GB DDR3
 Leva 15 segundos!




 É instantâneo!
Scipy e NumPy não fornecem funções nativas
para plotagem

  São pacotes essencialmente para processamento
 numérico

  Para plotar, usar o pacote Matplotlib
  Gráficos em 2D
  http://matplotlib.sourceforge.net/
Acesse
http://docs.scipy.org/doc/
Python for Scientific Computing Conference
http://conference.scipy.org/scipy2011/
Python é uma linguagem de script
 Adote que o IDE que você preferir: vim, emacs, Wing, Eric,
Netbeans, Ninja, etc.

  Scipy é usado normalmente com a shell interativa avançada
IPython
Normalmente o conjunto é chamado pylab




          IPython

  SciPy             Matplotlib

          NumPy

          Python
Olhando Python um
pouco mais de perto!
Para obter o interpretador Python
acessar
http://www.python.org/download/
  Versões
  Python 2.7.2 foi liberada em 11 de junho
 de 2011
  Python 3.2.2* foi liberada em 04 de
 setembro de 2011
Onde sua imaginação mandar!
Web e Internet
Database
GUIs
Científico e processamento numérico
Educação
Programação de rede
Construção e teste de software
Desenvolvimento de jogos
renderização 3D
Roda em
Unix: HP-UX, Solaris ...
Linux (freqüentemente pré-instalada)
Mac OSX (sempre pré-instalada)
Windows: 9x, ME, 2K, XP, Vista, Seven
Apple iPhone
Google Android
Extensa biblioteca padrão

 Um módulo para o que você
precisar

  sys, random, re, datetime,
 calendar, csv, os, webbrowser,
 string, urlib, Tkinter,
 codecs, pickle, types, array,
 mutex, queue, zlib, gzip, md5,
 thread, socket, email,
 xml.dom, locale, etc.
Python é case sensitive

 Linhas são delimitadas por enter

 Tipagem é forte e dinâmica

  Não há declaração de variáveis como em C, Java,
 Pascal, etc.

  Você pode utilizar o interpretador em modo
interativo ou seu IDE/editor favoritos
Em Python, variáveis são referências a
objetos
   não guardam os objetos em si
   não têm tipo, mas os objetos aos quais elas se
 referem têm tipo
  São criadas dinamicamente

  Uma variável não pode ser utilizada em uma
expressão sem ter sido inicializada
  não existe “criação automática” de variáveis
Variáveis não são “caixas” com valores
Variáveis são “rótulos” colados em objetos

São criadas pela atribuição =
Atribuição não gera uma cópia do objeto
Uma referência (variável) pode ser liberada
Usando del
 Não existindo mais referências a um objeto, ele é
removido da memória (garbage collector)
Normalmente para programas maiores você
irá codificar arquivos (scripts) em um IDE
  extensão py

   O script pode ser executado diretamente da
linha de comando
  python oi.py


  Ou carregado para o interpretador interativo
  >>> import oi.py
Módulos são arquivos que contêm qualquer
estrutura python (classes, funções, variáveis,
etc.) e podem ser importados nos programas

  Quando importado pela primeira vez o módulo é
 compilado e um arquivo .pyc ou .pyo é gerado

  Um módulo é um objeto singleton
  Apenas uma instância é carregada em memória
  torna-se disponível globalmente para o programa
 que fez a importação
Funções importantes são disponibilizadas em
módulos da biblioteca padrão
  Ex.: módulo math tem funções como sin, cos, exp e
 outras
  Um módulo pode conter não só funções, mas
também variáveis ou classes
  Ex.: math define a constante pi

   Os módulos são localizados pelo
interpretador pela lista de diretórios em
PYTHONPATH (sys.path), que inclui o diretório
atual
Para usar os elementos de um módulo,
comando import

  import modulo
  from modulo import nome1,...,nomen
  from modulo import *


  A importação ocorre apenas uma vez!

  Para carregar um módulo novamente (que tenha sido
 alterado) pode-se usar a função reload
Exemplos
Se um programa pode ser executado isolado
ou importado dentro de outro, como distinguir
as duas situações?

  O módulo principal de um programa tem a variável
 __name__ contendo “__main__”

  Para executar um código apenas se o módulo for o
 principal e não quando ele for importado
A estrutura dos blocos é definida pela
indentação
  Não misturar tabulações com espaços
Quando o caractere # aparece, o interpretador
ignora o restante do código até o final da linha

  Isso não vale dentro de strings

  Para várias linhas use asplas triplas (docstring)
  Será útil para documentar funções, classes, módulos, etc.
Tipos básicos
int = normalmente 32 bits
long = limitado ao tamanho da memória
  Há promoção automática de int para long
  Divisão de inteiros em python < 3 resulta sempre int
Tipos básicos
float = ponto flutuante de 32 bits
complex= para números complexos
Construtores ou funções de conversão
int (n)
float (n)
complex (n)
abs (n)
Básicos
+, -, *, /, **

Inteiros
%, //

Bit a Bit
&, |, ^, ~, >>, <<
Módulo math e outros
Representa o valor nulo
Equivalente a False em operações booleanas

Aplicações típicas
Valor default em parâmetros de funções
Valor de retorno de funções que será descartado
 Como void de C/C++
Constantes True e False
Ocorre conversão automática entre tipos

Conversão explícita pode ser feita com bool(x)
Relacionais
>, <, >=, <=, ==, !=, is, is not
Sempre retornam um bool

Lógicos
and, or, not
str – Sequência de bytes, com a
acentuação dependente do encoding
  Delimitadas por aspas, apóstrofo ou três
 aspas ou três apóstrofos
Constantes str ou unicode são interpretadas
segundo a codificação declarada num
comentário especial no início do arquivo .py




  Nós (brasileiros) frequentemente lidamos
com textos não ASCII
Use caracteres de formatação, como na printf
de C

  %s, %d, %f são os mais comuns
Tuplas são sequências imutáveis
  não é possível modificar as referências contidas na
tupla
  Tuplas constantes são representadas como
sequências de itens entre parênteses




 CUIDADO: em certos contextos os parênteses em
redor das tuplas podem ser omitidos
Listas são coleções de itens heterogêneos
que podem ser acessados sequencialmente ou
indexados
  São mutáveis
  Constantes do tipo lista são delimitadas por
 colchetes []
Facilmente você pode criar uma lista
numérica com
  range([inicio,] fim[, passo])

   Retorna uma sequência numérica conforme os
 argumentos dados
  Normalmente usada em laços for
Os tipos string, lista, tupla, buffer são
sequências
  Coleção ordenada e iterável de itens

  Operações
  s[i] = acessa um item
  s[-i] = acessa um item pelo final
  s+z = concatena
  s*n = produz n cópias de s concatenadas
  e in s = elemento e está em s?
  e not in s = elemento e não está em s?
Operações de slicing
s[a:b] cópia de a (inclusive) até b (exclusive)
s[a:] cópia a partir de a (inclusive)
s[:b] cópia até b (exclusive)
s[:] cópia total de s
s[a:b:n] cópia de n em n itens

Atribuição
s[2:5] = [6,3,2,0]
Aplicável somente em sequências mutáveis
Dicionários são estruturas de dados que
implementam mapeamentos

  coleções de pares chave:valor que podem ser
 recuperados pela chave
  A chave pode ser qualquer imutável
Entrada com input




Saída com print
if
if (expressao):
   bloco
[elif (expressao):
   bloco]
[else:
   bloco]
exemplo
for
for variavel in sequencia:
   bloco
[else:
   bloco]
  while
while (expressao):
   bloco
[else:
   bloco]
Exemplo
Modularizam o código
 Comando def inicia a definição de uma função
 Comando return marca o fim da execução da
função e define o resultado a ser devolvido
   Pode ser None
Exemplo
Ei, não vamos complicar!
Classe file representam arquivos
 Use a função open (ou construtor file(), são
sinônimos)


abrir arquivo binário para leitura
 arq = file(‘imagem.png','rb')

 abrir arquivo texto para escrita
 arq = open(‘log.txt','w')

abrir arquivo para acrescentar (append)
 arq = file(‘imagem.png','a')
Voltando a Scipy!
Teste interativo, aplicações pequenas


Aplicações “sérias”
Considere
Valor de 




Valor de
Um array Numpy é uma coleção homegênea
de N-dimensões de itens do mesmo tipo

  O tipo pode ser qualquer estrutura arbitrária
Criação e verificação de tipos
Dimensões

Bytes por elemento




Quantidade de elementos



Quantidade de bytes
Multiplicação por um escalar
Multiplicação por vetor e aplicação de função
Criação




Transposta



Inversa
Diagonal




Solve
Módulo stats

Cálculo de estatísticas básicas
 numpy.mean,
 numpy.std,
 numpy.var
 numpy.cov
 stats.skew
 stats.kurtosis
 stats.moment
 Etc.
Distribuições
Processamento de sinais e imagens
Filtragem (Filtering)
  Convolução 2D (com condições de limite)
  Convolução ND
  Filtro B-spline
  Filtro ND Order, filtro ND mediana
  Filtros IIR/FIR e projeto de filtros
Sistemas LTI(Linear Time-Invariant)
  Simulação de sistemas
  Impulso e resposta
  Expansão em frações parciais
A famosa imagem clássica lena está
empacotada para testes
A imagem lena é
um pequeno
recorte de uma
foto digitalizada
da Playboy
americana
(novembro,1973),
da modelo sueca
Lena Sjooblom
Aplicando filtro
Inserção de ruído
Filtro para remoção de ruído
Detecção de limites
Sistemas LTI
Exemplo
Minimização da Função de Bessel (1784-1846)

 Propagação de ondas
 Difusão de calor
 Processamento de sinais
 etc.




              !
Ex.: Minimizar
Função de Bessel, primeira ordem, entre 4 e 7
Mais de 200 funções!
Exemplo: Bessel
Ex.: Plotando   e
Computação Científica com SciPy - Brevíssimo Tutorial

Computação Científica com SciPy - Brevíssimo Tutorial

  • 2.
    SciPy é softwareopen source voltado para matemáticos, engenheiros e cientistas em geral http://www.scipy.org/ Ideal para computação científica Matemática avançada, processamento de sinais, otimização, estatística, etc. Extensão da linguagem Python Utiliza também as extensões Numpy e MatplotLib
  • 3.
    é uma linguageminterpretada, interativa, funcional, orientada a objetos, dinamicamente tipada e com gerenciamento automático de memória Similar, em certos aspectos, a Perl, Ruby, Scheme, Smalltalk e Tcl
  • 4.
    Numpy define vetores/matrizesnuméricas e operações sobre os mesmos http://numpy.scipy.org/ Alta performance Manipular arrays de Numpy é muito mais rápido que listas nativas de Python
  • 5.
    Exemplo: Python purox Numpy Intel i5-2400 3.10 GHz, 4 GB DDR3 Leva 15 segundos! É instantâneo!
  • 6.
    Scipy e NumPynão fornecem funções nativas para plotagem São pacotes essencialmente para processamento numérico Para plotar, usar o pacote Matplotlib Gráficos em 2D http://matplotlib.sourceforge.net/
  • 7.
  • 8.
    Python for ScientificComputing Conference http://conference.scipy.org/scipy2011/
  • 10.
    Python é umalinguagem de script Adote que o IDE que você preferir: vim, emacs, Wing, Eric, Netbeans, Ninja, etc. Scipy é usado normalmente com a shell interativa avançada IPython
  • 11.
    Normalmente o conjuntoé chamado pylab IPython SciPy Matplotlib NumPy Python
  • 12.
  • 13.
    Para obter ointerpretador Python acessar http://www.python.org/download/ Versões Python 2.7.2 foi liberada em 11 de junho de 2011 Python 3.2.2* foi liberada em 04 de setembro de 2011
  • 14.
    Onde sua imaginaçãomandar! Web e Internet Database GUIs Científico e processamento numérico Educação Programação de rede Construção e teste de software Desenvolvimento de jogos renderização 3D
  • 15.
    Roda em Unix: HP-UX,Solaris ... Linux (freqüentemente pré-instalada) Mac OSX (sempre pré-instalada) Windows: 9x, ME, 2K, XP, Vista, Seven Apple iPhone Google Android
  • 16.
    Extensa biblioteca padrão Um módulo para o que você precisar sys, random, re, datetime, calendar, csv, os, webbrowser, string, urlib, Tkinter, codecs, pickle, types, array, mutex, queue, zlib, gzip, md5, thread, socket, email, xml.dom, locale, etc.
  • 17.
    Python é casesensitive Linhas são delimitadas por enter Tipagem é forte e dinâmica Não há declaração de variáveis como em C, Java, Pascal, etc. Você pode utilizar o interpretador em modo interativo ou seu IDE/editor favoritos
  • 18.
    Em Python, variáveissão referências a objetos não guardam os objetos em si não têm tipo, mas os objetos aos quais elas se referem têm tipo São criadas dinamicamente Uma variável não pode ser utilizada em uma expressão sem ter sido inicializada não existe “criação automática” de variáveis
  • 19.
    Variáveis não são“caixas” com valores Variáveis são “rótulos” colados em objetos São criadas pela atribuição =
  • 20.
    Atribuição não gerauma cópia do objeto Uma referência (variável) pode ser liberada Usando del Não existindo mais referências a um objeto, ele é removido da memória (garbage collector)
  • 21.
    Normalmente para programasmaiores você irá codificar arquivos (scripts) em um IDE extensão py O script pode ser executado diretamente da linha de comando python oi.py Ou carregado para o interpretador interativo >>> import oi.py
  • 22.
    Módulos são arquivosque contêm qualquer estrutura python (classes, funções, variáveis, etc.) e podem ser importados nos programas Quando importado pela primeira vez o módulo é compilado e um arquivo .pyc ou .pyo é gerado Um módulo é um objeto singleton Apenas uma instância é carregada em memória torna-se disponível globalmente para o programa que fez a importação
  • 23.
    Funções importantes sãodisponibilizadas em módulos da biblioteca padrão Ex.: módulo math tem funções como sin, cos, exp e outras Um módulo pode conter não só funções, mas também variáveis ou classes Ex.: math define a constante pi Os módulos são localizados pelo interpretador pela lista de diretórios em PYTHONPATH (sys.path), que inclui o diretório atual
  • 24.
    Para usar oselementos de um módulo, comando import import modulo from modulo import nome1,...,nomen from modulo import * A importação ocorre apenas uma vez! Para carregar um módulo novamente (que tenha sido alterado) pode-se usar a função reload
  • 25.
  • 26.
    Se um programapode ser executado isolado ou importado dentro de outro, como distinguir as duas situações? O módulo principal de um programa tem a variável __name__ contendo “__main__” Para executar um código apenas se o módulo for o principal e não quando ele for importado
  • 28.
    A estrutura dosblocos é definida pela indentação Não misturar tabulações com espaços
  • 29.
    Quando o caractere# aparece, o interpretador ignora o restante do código até o final da linha Isso não vale dentro de strings Para várias linhas use asplas triplas (docstring) Será útil para documentar funções, classes, módulos, etc.
  • 30.
    Tipos básicos int =normalmente 32 bits long = limitado ao tamanho da memória Há promoção automática de int para long Divisão de inteiros em python < 3 resulta sempre int
  • 31.
    Tipos básicos float =ponto flutuante de 32 bits complex= para números complexos
  • 32.
    Construtores ou funçõesde conversão int (n) float (n) complex (n) abs (n)
  • 33.
    Básicos +, -, *,/, ** Inteiros %, // Bit a Bit &, |, ^, ~, >>, <<
  • 34.
  • 35.
    Representa o valornulo Equivalente a False em operações booleanas Aplicações típicas Valor default em parâmetros de funções Valor de retorno de funções que será descartado Como void de C/C++
  • 36.
    Constantes True eFalse Ocorre conversão automática entre tipos Conversão explícita pode ser feita com bool(x)
  • 37.
    Relacionais >, <, >=,<=, ==, !=, is, is not Sempre retornam um bool Lógicos and, or, not
  • 38.
    str – Sequênciade bytes, com a acentuação dependente do encoding Delimitadas por aspas, apóstrofo ou três aspas ou três apóstrofos
  • 39.
    Constantes str ouunicode são interpretadas segundo a codificação declarada num comentário especial no início do arquivo .py Nós (brasileiros) frequentemente lidamos com textos não ASCII
  • 40.
    Use caracteres deformatação, como na printf de C %s, %d, %f são os mais comuns
  • 41.
    Tuplas são sequênciasimutáveis não é possível modificar as referências contidas na tupla Tuplas constantes são representadas como sequências de itens entre parênteses CUIDADO: em certos contextos os parênteses em redor das tuplas podem ser omitidos
  • 42.
    Listas são coleçõesde itens heterogêneos que podem ser acessados sequencialmente ou indexados São mutáveis Constantes do tipo lista são delimitadas por colchetes []
  • 43.
    Facilmente você podecriar uma lista numérica com range([inicio,] fim[, passo]) Retorna uma sequência numérica conforme os argumentos dados Normalmente usada em laços for
  • 44.
    Os tipos string,lista, tupla, buffer são sequências Coleção ordenada e iterável de itens Operações s[i] = acessa um item s[-i] = acessa um item pelo final s+z = concatena s*n = produz n cópias de s concatenadas e in s = elemento e está em s? e not in s = elemento e não está em s?
  • 45.
    Operações de slicing s[a:b]cópia de a (inclusive) até b (exclusive) s[a:] cópia a partir de a (inclusive) s[:b] cópia até b (exclusive) s[:] cópia total de s s[a:b:n] cópia de n em n itens Atribuição s[2:5] = [6,3,2,0] Aplicável somente em sequências mutáveis
  • 46.
    Dicionários são estruturasde dados que implementam mapeamentos coleções de pares chave:valor que podem ser recuperados pela chave A chave pode ser qualquer imutável
  • 47.
  • 48.
    if if (expressao): bloco [elif (expressao): bloco] [else: bloco]
  • 49.
  • 50.
    for for variavel insequencia: bloco [else: bloco] while while (expressao): bloco [else: bloco]
  • 51.
  • 52.
    Modularizam o código Comando def inicia a definição de uma função Comando return marca o fim da execução da função e define o resultado a ser devolvido Pode ser None
  • 53.
  • 55.
    Ei, não vamoscomplicar!
  • 56.
    Classe file representamarquivos Use a função open (ou construtor file(), são sinônimos) abrir arquivo binário para leitura arq = file(‘imagem.png','rb') abrir arquivo texto para escrita arq = open(‘log.txt','w') abrir arquivo para acrescentar (append) arq = file(‘imagem.png','a')
  • 57.
  • 58.
    Teste interativo, aplicaçõespequenas Aplicações “sérias” Considere
  • 59.
  • 60.
    Um array Numpyé uma coleção homegênea de N-dimensões de itens do mesmo tipo O tipo pode ser qualquer estrutura arbitrária
  • 61.
  • 62.
    Dimensões Bytes por elemento Quantidadede elementos Quantidade de bytes
  • 63.
  • 64.
    Multiplicação por vetore aplicação de função
  • 65.
  • 66.
  • 67.
    Módulo stats Cálculo deestatísticas básicas numpy.mean, numpy.std, numpy.var numpy.cov stats.skew stats.kurtosis stats.moment Etc.
  • 68.
  • 69.
    Processamento de sinaise imagens Filtragem (Filtering) Convolução 2D (com condições de limite) Convolução ND Filtro B-spline Filtro ND Order, filtro ND mediana Filtros IIR/FIR e projeto de filtros Sistemas LTI(Linear Time-Invariant) Simulação de sistemas Impulso e resposta Expansão em frações parciais
  • 70.
    A famosa imagemclássica lena está empacotada para testes
  • 71.
    A imagem lenaé um pequeno recorte de uma foto digitalizada da Playboy americana (novembro,1973), da modelo sueca Lena Sjooblom
  • 72.
  • 73.
  • 74.
  • 75.
  • 76.
  • 77.
    Exemplo Minimização da Funçãode Bessel (1784-1846) Propagação de ondas Difusão de calor Processamento de sinais etc. !
  • 78.
    Ex.: Minimizar Função deBessel, primeira ordem, entre 4 e 7
  • 79.
    Mais de 200funções! Exemplo: Bessel
  • 80.