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

2,085 views
2,000 views

Published on

Published in: Technology
0 Comments
4 Likes
Statistics
Notes
  • Be the first to comment

No Downloads
Views
Total views
2,085
On SlideShare
0
From Embeds
0
Number of Embeds
3
Actions
Shares
0
Downloads
141
Comments
0
Likes
4
Embeds 0
No embeds

No notes for slide

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

  1. 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. 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. 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. 4. Exemplo: Python puro x NumpyIntel i5-2400 3.10 GHz, 4 GB DDR3 Leva 15 segundos! É instantâneo!
  5. 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. 6. Acessehttp://docs.scipy.org/doc/
  7. 7. Python for Scientific Computing Conferencehttp://conference.scipy.org/scipy2011/
  8. 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. 9. Normalmente o conjunto é chamado pylab IPython SciPy Matplotlib NumPy Python
  10. 10. Olhando Python umpouco mais de perto!
  11. 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. 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. 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. 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. 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. 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. 17. Variáveis não são “caixas” com valoresVariáveis são “rótulos” colados em objetosSão criadas pela atribuição =
  18. 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. 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. 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. 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. 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. 23. Exemplos
  24. 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. 25. A estrutura dos blocos é definida pelaindentação Não misturar tabulações com espaços
  26. 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. 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. 28. Tipos básicosfloat = ponto flutuante de 32 bitscomplex= para números complexos
  29. 29. Construtores ou funções de conversãoint (n)float (n)complex (n)abs (n)
  30. 30. Básicos+, -, *, /, **Inteiros%, //Bit a Bit&, |, ^, ~, >>, <<
  31. 31. Módulo math e outros
  32. 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. 33. Constantes True e FalseOcorre conversão automática entre tiposConversão explícita pode ser feita com bool(x)
  34. 34. Relacionais>, <, >=, <=, ==, !=, is, is notSempre retornam um boolLógicosand, or, not
  35. 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. 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. 37. Use caracteres de formatação, como na printfde C %s, %d, %f são os mais comuns
  38. 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. 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. 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. 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. 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. 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. 44. Entrada com inputSaída com print
  45. 45. ifif (expressao): bloco[elif (expressao): bloco][else: bloco]
  46. 46. exemplo
  47. 47. forfor variavel in sequencia: bloco[else: bloco] whilewhile (expressao): bloco[else: bloco]
  48. 48. Exemplo
  49. 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. 50. Exemplo
  51. 51. Ei, não vamos complicar!
  52. 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. 53. Voltando a Scipy!
  54. 54. Teste interativo, aplicações pequenasAplicações “sérias”Considere
  55. 55. Valor de Valor de
  56. 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. 57. Criação e verificação de tipos
  58. 58. DimensõesBytes por elementoQuantidade de elementosQuantidade de bytes
  59. 59. Multiplicação por um escalar
  60. 60. Multiplicação por vetor e aplicação de função
  61. 61. CriaçãoTranspostaInversa
  62. 62. DiagonalSolve
  63. 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. 64. Distribuições
  65. 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. 66. A famosa imagem clássica lena estáempacotada para testes
  67. 67. A imagem lena éum pequenorecorte de umafoto digitalizadada Playboyamericana(novembro,1973),da modelo suecaLena Sjooblom
  68. 68. Aplicando filtro
  69. 69. Inserção de ruído
  70. 70. Filtro para remoção de ruído
  71. 71. Detecção de limites
  72. 72. Sistemas LTI
  73. 73. ExemploMinimização da Função de Bessel (1784-1846) Propagação de ondas Difusão de calor Processamento de sinais etc. !
  74. 74. Ex.: MinimizarFunção de Bessel, primeira ordem, entre 4 e 7
  75. 75. Mais de 200 funções!Exemplo: Bessel
  76. 76. Ex.: Plotando e

×