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, dinamicamentetipada 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 NumpyIntel i5-2400 3.10 GHz, 4 GB DDR3Leva 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 MatplotlibGráficos em 2Dhttp://matplotlib.sourceforge.net/
Acessehttp://docs.scipy.org/doc/
Python for Scientific Computing Conferencehttp://conference.scipy.org/scipy2011/
Python é uma linguagem de scriptAdote que o IDE que você preferir: vim, emacs, Wing, Eric,
Netbeans, Ninja, etc.
Scipy é usado normalmente com a shell interativa avançada 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/
VersõesPython 2.7.2 foi liberada em 11 de junho
de 2011Python 3.2.2* foi liberada em 04 de
setembro de 2011
Onde sua imaginação mandar!Web e Internet DatabaseGUIsCientífico e processamento numéricoEducaçãoProgramação de rede Construção e teste de softwareDesenvolvimento de jogos renderização 3D
Roda emUnix: HP-UX, Solaris ...Linux (freqüentemente pré-instalada)Mac OSX (sempre pré-instalada)Windows: 9x, ME, 2K, XP, Vista, SevenApple iPhoneGoogle 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 modointerativo ou seu IDE/editor favoritos
Em Python, variáveis são referências a objetos
não guardam os objetos em sinão têm tipo, mas os objetos aos quais elas se
referem têm tipoSã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 valoresVariáveis são “rótulos” colados em objetos
São criadas pela atribuição =
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)
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 singletonApenas 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 outrasUm módulo pode conter não só funções, mas
também variáveis ou classesEx.: 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 modulofrom 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 pelaindentaçã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ásicosint = normalmente 32 bitslong = limitado ao tamanho da memória
Há promoção automática de int para longDivisão de inteiros em python < 3 resulta sempre int
Tipos básicosfloat = ponto flutuante de 32 bitscomplex= para números complexos
Construtores ou funções de conversãoint (n)float (n)complex (n)abs (n)
Básicos+, -, *, /, **
Inteiros%, //
Bit a Bit&, |, ^, ~, >>, <<
Módulo math e outros
Representa o valor nuloEquivalente a False em operações booleanas
Aplicações típicasValor default em parâmetros de funçõesValor de retorno de funções que será descartado
Como void de C/C++
Constantes True e FalseOcorre conversão automática entre tipos
Conversão explícita pode ser feita com bool(x)
Relacionais>, <, >=, <=, ==, !=, is, is notSempre retornam um bool
Lógicosand, or, not
str – Sequência de bytes, com aacentuação dependente do encoding
Delimitadas por aspas, apóstrofo ou trêsaspas 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 printfde C
%s, %d, %f são os mais comuns
Tuplas são sequências imutáveisnão é possível modificar as referências contidas na
tuplaTuplas 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áveisConstantes 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çõess[i] = acessa um items[-i] = acessa um item pelo finals+z = concatenas*n = produz n cópias de s concatenadase in s = elemento e está em s?e not in s = elemento e não está em s?
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 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 queimplementam mapeamentos
coleções de pares chave:valor que podem ser recuperados pela chaveA chave pode ser qualquer imutável
Entrada com input
Saída com print
ifif (expressao):
bloco[elif (expressao):
bloco][else:
bloco]
exemplo
forfor variavel in sequencia:
bloco[else:
bloco]while
while (expressao):bloco
[else:bloco]
Exemplo
Modularizam o códigoComando def inicia a definição de uma funçãoComando return marca o fim da execução da
função e define o resultado a ser devolvidoPode 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 leituraarq = file(‘imagem.png','rb')
abrir arquivo texto para escritaarq = 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ásicasnumpy.mean, numpy.std, numpy.varnumpy.covstats.skewstats.kurtosisstats.momentEtc.
Distribuições
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 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 Playboyamericana (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
ExemploMinimização da Função de Bessel (1784-1846)
Propagação de ondasDifusão de calorProcessamento de sinaisetc.
!
Ex.: MinimizarFunção de Bessel, primeira ordem, entre 4 e 7
Mais de 200 funções!Exemplo: Bessel
Ex.: Plotando e
Top Related