http://www.scipy.org/ Ideal para computao cientfica Matemtica avanada, processamento de sinais, otimizao, estatstica, etc. Extenso da linguagem Python Utiliza tambm as extenses Numpy e MatplotLib uma linguagem interpretada, interativa, funcional, orientada a objetos, dinamicamente tipada e com gerenciamento automtico de memria Similar, em certos aspectos, a Perl, Ruby, Scheme, Smalltalk e Tcl Numpy define vetores/matrizes numricas e operaes sobre os mesmos http://numpy.scipy.org/ Alta performance Manipular arrays de Numpy muito mais rpido que listas nativas de Python Exemplo: Python puro x Numpy Intel i5-2400 3.10 GHz, 4 GB DDR3 Leva 15 segundos! instantneo! Scipy e NumPy no fornecem funes nativas para plotagem So pacotes essencialmente para processamento numrico Para plotar, usar o pacote Matplotlib Grficos 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 avanada IPython Python IPython NumPy SciPy Matplotlib Normalmente o conjunto chamado pylab Olhando Python um pouco mais de perto! Para obter o interpretador Python acessar http://www.python.org/download/ Verses 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 imaginao mandar! Web e Internet Database GUIs Cientfico e processamento numrico Educao Programao de rede Construo e teste de software Desenvolvimento de jogos renderizao 3D Roda em Unix: HP-UX, Solaris ... Linux (freqentemente pr-instalada) Mac OSX (sempre pr-instalada) Windows: 9x, ME, 2K, XP, Vista, Seven Apple iPhone Google Android Extensa biblioteca padro Um mdulo para o que voc precisar sys, r andom, r e, dat et i me, cal endar , csv, os, webbr owser , st r i ng, ur l i b, Tki nt er , codecs, pi ckl e, t ypes, ar r ay, mut ex, queue, zl i b, gzi p, md5, t hr ead, socket , emai l , xml . dom, l ocal e, etc. Python case sensitive Linhas so delimitadas por enter Tipagem forte e dinmica No h declarao de variveis como em C, Java, Pascal, etc. Voc pode utilizar o interpretador em modo interativo ou seu IDE/editor favoritos Em Python, variveis so referncias a objetos no guardam os objetos em si no tm tipo, mas os objetos aos quais elas se referem tm tipo So criadas dinamicamente Uma varivel no pode ser utilizada em uma expresso sem ter sido inicializada no existe criao automtica de variveis Variveis no so caixas com valores Variveis so rtulos colados em objetos So criadas pela atribuio = Atribuio no gera uma cpia do objeto Uma referncia (varivel) pode ser liberada Usando del No existindo mais referncias a um objeto, ele removido da memria (garbage collector) Normalmente para programas maiores voc ir codificar arquivos (scripts) em um IDE extenso py O script pode ser executado diretamente da linha de comando python oi.py Ou carregado para o interpretador interativo >>> import oi.py Mdulos so arquivos que contm qualquer estrutura python (classes, funes, variveis, etc.) e podem ser importados nos programas Quando importado pela primeira vez o mdulo compilado e um arquivo .pyc ou .pyo gerado Um mdulo um objeto singleton Apenas uma instncia carregada em memria torna-se disponvel globalmente para o programa que fez a importao Funes importantes so disponibilizadas em mdulos da biblioteca padro Ex.: mdulo math tem funes como sin, cos, exp e outras Um mdulo pode conter no s funes, mas tambm variveis ou classes Ex.: math define a constante pi Os mdulos so localizados pelo interpretador pela lista de diretrios em PYTHONPATH (sys.path), que inclui o diretrio atual Para usar os elementos de um mdulo, comando import import modulo from modulo import nome 1 ,...,nome n from modulo import * A importao ocorre apenas uma vez! Para carregar um mdulo novamente (que tenha sido alterado) pode-se usar a funo reload Exemplos Se um programa pode ser executado isolado ou importado dentro de outro, como distinguir as duas situaes? O mdulo principal de um programa tem a varivel __name__ contendo __main__ Para executar um cdigo apenas se o mdulo for o principal e no quando ele for importado A estrutura dos blocos definida pela indentao No misturar tabulaes com espaos Quando o caractere # aparece, o interpretador ignora o restante do cdigo at o final da linha Isso no vale dentro de strings Para vrias linhas use asplas triplas (docstring) Ser til para documentar funes, classes, mdulos, etc. Tipos bsicos int = normalmente 32 bits long = limitado ao tamanho da memria H promoo automtica de int para long Diviso de inteiros em python < 3 resulta sempre int Tipos bsicos float = ponto flutuante de 32 bits complex= para nmeros complexos Construtores ou funes de converso int (n) float (n) complex (n) abs (n) Bsicos +, -, *, /, ** Inteiros %, // Bit a Bit &, |, ^, ~, >>, << Mdulo math e outros Representa o valor nulo Equivalente a False em operaes booleanas Aplicaes tpicas Valor default em parmetros de funes Valor de retorno de funes que ser descartado Como void de C/C++ Constantes True e False Ocorre converso automtica entre tipos Converso explcita pode ser feita com bool(x) Relacionais >, <, >=, <=, ==, !=, is, is not Sempre retornam um bool Lgicos and, or, not str Sequncia de bytes, com a acentuao dependente do encoding Delimitadas por aspas, apstrofo ou trs aspas ou trs apstrofos Constantes str ou unicode so interpretadas segundo a codificao declarada num comentrio especial no incio do arquivo .py Ns (brasileiros) frequentemente lidamos com textos no ASCII Use caracteres de formatao, como na printf de C %s, %d, %f so os mais comuns Tuplas so sequncias imutveis no possvel modificar as referncias contidas na tupla Tuplas constantes so representadas como sequncias de itens entre parnteses CUIDADO: em certos contextos os parnteses em redor das tuplas podem ser omitidos Listas so colees de itens heterogneos que podem ser acessados sequencialmente ou indexados So mutveis Constantes do tipo lista so delimitadas por colchetes [] Facilmente voc pode criar uma lista numrica com range([inicio,] fim[, passo]) Retorna uma sequncia numrica conforme os argumentos dados Normalmente usada em laos for Os tipos string, lista, tupla, buffer so sequncias Coleo ordenada e itervel de itens Operaes s[i] = acessa um item s[-i] = acessa um item pelo final s+z = concatena s*n = produz n cpias de s concatenadas e in s = elemento e est em s? e not in s = elemento e no est em s? Operaes de slicing s[a:b] cpia de a (inclusive) at b (exclusive) s[a:] cpia a partir de a (inclusive) s[:b] cpia at b (exclusive) s[:] cpia total de s s[a:b:n] cpia de n em n itens Atribuio s[2:5] = [6,3,2,0] Aplicvel somente em sequncias mutveis Dicionrios so estruturas de dados que implementam mapeamentos colees de pares chave:valor que podem ser recuperados pela chave A chave pode ser qualquer imutvel Entrada com input Sada com print if if ( expr essao) : bl oco [ elif ( expr essao) : bl oco] [ else: bl oco] exemplo for for var i avel in sequenci a: bl oco [ else: bl oco] while while ( expr essao) : bl oco [ else: bl oco] Exemplo Modularizam o cdigo Comando def inicia a definio de uma funo Comando return marca o fim da execuo da funo e define o resultado a ser devolvido Pode ser None Exemplo Ei, no vamos complicar! Classe file representam arquivos Use a funo open (ou construtor file(), so sinnimos) abrir arquivo binrio 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, aplicaes pequenas Aplicaes srias Considere Valor de Valor de Um array Numpy uma coleo homegnea de N-dimenses de itens do mesmo tipo O tipo pode ser qualquer estrutura arbitrria Criao e verificao de tipos Dimenses Bytes por elemento Quantidade de elementos Quantidade de bytes Multiplicao por um escalar Multiplicao por vetor e aplicao de funo Criao Transposta Inversa Diagonal Solve Mdulo stats Clculo de estatsticas bsicas numpy.mean, numpy.std, numpy.var numpy.cov stats.skew stats.kurtosis stats.moment Etc. Distribuies Processamento de sinais e imagens Filtragem(Filtering) Convoluo 2D (com condies de limite) Convoluo ND Filtro B-spline Filtro ND Order, filtro ND mediana Filtros IIR/FIR e projeto de filtros Sistemas LTI(Linear Time-Invariant) Simulao de sistemas Impulso e resposta Expanso emfraes parciais A famosa imagem clssica 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 Insero de rudo Filtro para remoo de rudo Deteco de limites Sistemas LTI 2 Exemplo Minimizao da Funo de Bessel (1784-1846) Propagao de ondas Difuso de calor Processamento de sinais etc. ] u (x) = (-1) m m! I(m+u +1) ( 1 2 x) 2m+u
m= Ex.: Minimizar Funo de Bessel, primeira ordem, entre 4 e 7 Mais de 200 funes! Exemplo: Bessel Ex.: Plotando e