Computação Científica com SciPy - Brevíssimo Tutorial
Upcoming SlideShare
Loading in...5
×

Like this? Share it with your network

Share

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

  • 1,900 views
Uploaded on

 

More in: Technology
  • Full Name Full Name Comment goes here.
    Are you sure you want to
    Your message goes here
    Be the first to comment
No Downloads

Views

Total Views
1,900
On Slideshare
1,900
From Embeds
0
Number of Embeds
0

Actions

Shares
Downloads
115
Comments
0
Likes
4

Embeds 0

No embeds

Report content

Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel
    No notes for slide

Transcript

  • 1. SciPy é software open source voltado paramatemá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
  • 2. é uma linguagem interpretada, interativa,funcional, orientada a objetos, dinamicamentetipada e com gerenciamento automático dememória Similar, em certos aspectos, a Perl, Ruby, Scheme, Smalltalk e Tcl
  • 3. Numpy define vetores/matrizes numéricas eoperações sobre os mesmos http://numpy.scipy.org/ Alta performance Manipular arrays de Numpy é muito mais rápido que listas nativas de Python
  • 4. Exemplo: Python puro x NumpyIntel i5-2400 3.10 GHz, 4 GB DDR3 Leva 15 segundos! É instantâneo!
  • 5. Scipy e NumPy não fornecem funções nativaspara plotagem São pacotes essencialmente para processamento numérico Para plotar, usar o pacote Matplotlib Gráficos em 2D http://matplotlib.sourceforge.net/
  • 6. Acessehttp://docs.scipy.org/doc/
  • 7. Python for Scientific Computing Conferencehttp://conference.scipy.org/scipy2011/
  • 8. 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çadaIPython
  • 9. Normalmente o conjunto é chamado pylab IPython SciPy Matplotlib NumPy Python
  • 10. Olhando Python umpouco mais de perto!
  • 11. Para obter o interpretador Pythonacessarhttp://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
  • 12. Onde sua imaginação mandar!Web e InternetDatabaseGUIsCientífico e processamento numéricoEducaçãoProgramação de redeConstrução e teste de softwareDesenvolvimento de jogosrenderização 3D
  • 13. Roda emUnix: HP-UX, Solaris ...Linux (freqüentemente pré-instalada)Mac OSX (sempre pré-instalada)Windows: 9x, ME, 2K, XP, Vista, SevenApple iPhoneGoogle Android
  • 14. 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.
  • 15. 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 modointerativo ou seu IDE/editor favoritos
  • 16. Em Python, variáveis são referências aobjetos 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 umaexpressão sem ter sido inicializada não existe “criação automática” de variáveis
  • 17. Variáveis não são “caixas” com valoresVariáveis são “rótulos” colados em objetosSão criadas pela atribuição =
  • 18. Atribuição não gera uma cópia do objetoUma referência (variável) pode ser liberadaUsando del Não existindo mais referências a um objeto, ele éremovido da memória (garbage collector)
  • 19. Normalmente para programas maiores vocêirá codificar arquivos (scripts) em um IDE extensão py O script pode ser executado diretamente dalinha de comando python oi.py Ou carregado para o interpretador interativo >>> import oi.py
  • 20. Módulos são arquivos que contêm qualquerestrutura 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
  • 21. Funções importantes são disponibilizadas emmó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, mastambém variáveis ou classes Ex.: math define a constante pi Os módulos são localizados pelointerpretador pela lista de diretórios emPYTHONPATH (sys.path), que inclui o diretórioatual
  • 22. 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
  • 23. Exemplos
  • 24. Se um programa pode ser executado isoladoou importado dentro de outro, como distinguiras 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
  • 25. A estrutura dos blocos é definida pelaindentação Não misturar tabulações com espaços
  • 26. Quando o caractere # aparece, o interpretadorignora 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.
  • 27. Tipos básicosint = normalmente 32 bitslong = 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
  • 28. Tipos básicosfloat = ponto flutuante de 32 bitscomplex= para números complexos
  • 29. Construtores ou funções de conversãoint (n)float (n)complex (n)abs (n)
  • 30. Básicos+, -, *, /, **Inteiros%, //Bit a Bit&, |, ^, ~, >>, <<
  • 31. Módulo math e outros
  • 32. Representa o valor nuloEquivalente a False em operações booleanasAplicações típicasValor default em parâmetros de funçõesValor de retorno de funções que será descartado Como void de C/C++
  • 33. Constantes True e FalseOcorre conversão automática entre tiposConversão explícita pode ser feita com bool(x)
  • 34. Relacionais>, <, >=, <=, ==, !=, is, is notSempre retornam um boolLógicosand, or, not
  • 35. str – Sequência de bytes, com aacentuação dependente do encoding Delimitadas por aspas, apóstrofo ou três aspas ou três apóstrofos
  • 36. Constantes str ou unicode são interpretadassegundo a codificação declarada numcomentário especial no início do arquivo .py Nós (brasileiros) frequentemente lidamoscom textos não ASCII
  • 37. Use caracteres de formatação, como na printfde C %s, %d, %f são os mais comuns
  • 38. Tuplas são sequências imutáveis não é possível modificar as referências contidas natupla Tuplas constantes são representadas comosequências de itens entre parênteses CUIDADO: em certos contextos os parênteses emredor das tuplas podem ser omitidos
  • 39. Listas são coleções de itens heterogêneosque podem ser acessados sequencialmente ouindexados São mutáveis Constantes do tipo lista são delimitadas por colchetes []
  • 40. Facilmente você pode criar uma listanumérica com range([inicio,] fim[, passo]) Retorna uma sequência numérica conforme os argumentos dados Normalmente usada em laços for
  • 41. Os tipos string, lista, tupla, buffer sãosequê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?
  • 42. Operações de slicings[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 ss[a:b:n] cópia de n em n itensAtribuiçãos[2:5] = [6,3,2,0]Aplicável somente em sequências mutáveis
  • 43. Dicionários são estruturas de dados queimplementam mapeamentos coleções de pares chave:valor que podem ser recuperados pela chave A chave pode ser qualquer imutável
  • 44. Entrada com inputSaída com print
  • 45. ifif (expressao): bloco[elif (expressao): bloco][else: bloco]
  • 46. exemplo
  • 47. forfor variavel in sequencia: bloco[else: bloco] whilewhile (expressao): bloco[else: bloco]
  • 48. Exemplo
  • 49. Modularizam o código Comando def inicia a definição de uma função Comando return marca o fim da execução dafunção e define o resultado a ser devolvido Pode ser None
  • 50. Exemplo
  • 51. Ei, não vamos complicar!
  • 52. Classe file representam arquivos Use a função open (ou construtor file(), sãosinô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)
  • 53. Voltando a Scipy!
  • 54. Teste interativo, aplicações pequenasAplicações “sérias”Considere
  • 55. Valor de Valor de
  • 56. Um array Numpy é uma coleção homegêneade N-dimensões de itens do mesmo tipo O tipo pode ser qualquer estrutura arbitrária
  • 57. Criação e verificação de tipos
  • 58. DimensõesBytes por elementoQuantidade de elementosQuantidade de bytes
  • 59. Multiplicação por um escalar
  • 60. Multiplicação por vetor e aplicação de função
  • 61. CriaçãoTranspostaInversa
  • 62. DiagonalSolve
  • 63. Módulo statsCálculo de estatísticas básicas numpy.mean, numpy.std, numpy.var numpy.cov stats.skew stats.kurtosis stats.moment Etc.
  • 64. Distribuições
  • 65. Processamento de sinais e imagensFiltragem (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 filtrosSistemas LTI(Linear Time-Invariant) Simulação de sistemas Impulso e resposta Expansão em frações parciais
  • 66. A famosa imagem clássica lena estáempacotada para testes
  • 67. A imagem lena éum pequenorecorte de umafoto digitalizadada Playboyamericana(novembro,1973),da modelo suecaLena Sjooblom
  • 68. Aplicando filtro
  • 69. Inserção de ruído
  • 70. Filtro para remoção de ruído
  • 71. Detecção de limites
  • 72. Sistemas LTI
  • 73. ExemploMinimização da Função de Bessel (1784-1846) Propagação de ondas Difusão de calor Processamento de sinais etc. !
  • 74. Ex.: MinimizarFunção de Bessel, primeira ordem, entre 4 e 7
  • 75. Mais de 200 funções!Exemplo: Bessel
  • 76. Ex.: Plotando e