Sbc scipy
Upcoming SlideShare
Loading in...5
×

Like this? Share it with your network

Share

Sbc scipy

  • 1,083 views
Uploaded on

Um tutorial bem resumido sobre scipy e numpy.

Um tutorial bem resumido sobre scipy e numpy.

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
    Be the first to like this
No Downloads

Views

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

Actions

Shares
Downloads
20
Comments
0
Likes
0

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. Computação Científica com Numpy e Scipy Silas Santiago Lopes Pereira11 Departamento de Estatística e Computação – Universidade Estadual do Ceará (UECE) Av. Paranjana, 1700 – 60740903 – Fortaleza, CE – Brasil silas@larces.uece.br Abstract. This paper goal to show some modules of Python Programming language. Resumo. Este artigo tem o objetivo de apresentar alguns módulos da linguagem de programação Python que dispõem de um amplo conjunto de recursos para facilitar o desenvolvimento de aplicações científicas. São apresentadas as extensões Numpy e Scipy, entre outras, as quais fornecem diversas funcionalidades para trabalhar com valores numéricos e rotinas com matemática avançada.1. IntroduçãoNumpy (Numeric Python) é um módulo da linguagem Python que permite trabalhar comvetores e matrizes multidimensionais. Este módulo define os tipos matriz arraynumérico e também operações básicas sobre estes. Possui diversas ferramentassofisticadas, tais como funções de álgebra Linear básicas, transformação de Fourier,geração sofisticada de números aleatórios e ferramentas para integração com códigoFortran/C/C++. SciPy (pronuncia-se “Sigh Pie”) é um software open-source para matemática,ciência e engenharia desenvolvido por Eric Jones, Travis Oliphant,Pearu Peterson eoutros. É também o nome de uma conferência muito popular sobre programaçãocientífica com Python, que é patrocinada pela Enthought e outras. Tal biblioteca éprojetada para trabalhar juntamente com o módulo Numpy, e provê diversas rotinasnuméricas eficientes e de fácil entendimento tais como rotinas para integração numéricae otimização. Scipy é open source e patrocinado por Enthought(http://www.enthought.com). Eric Jones e Travis Oliphant foram dois dos autoresoriginais do SciPy, o qual é agora mantido por uma próspera comunidade de usuários edesenvolvedores. Figura 1. Eric Jones (á esquerda) e Travis Oliphant (á direita)
  • 2. Scipy engloba uma coleção de algoritmos matemáticos e funções apropriadas,embasada na extensão Numérica para Python. Tal módulo é capaz de tornarsignificativamente poderosa uma sessão interativa do Python, fornecendo ao usuáriocomandos de alto nível e classes para manipulação e visualização de dados. Em outraspalavras, uma sessão interativa com Scipy transforma-se em uma ambiente deprocessamento de dados e prototipação de sistemas capaz de competir com outrossoftwares matemáticos, tais como Matlab, IDL, Octave, R-Lab e Scilab. No entanto, ogrande poder de se usar o módulo Scipy no Python é ter-se uma linguagem deprogramação poderosa e de rápida prototipação e também eficaz no desenvolvimento deprogramas sofisticados e aplicações especializadas, como aplicações científicas. Afigura 1 ilustra o uso do Python no modo interativo com o módulo Scipy: Figura 1. Scipy como Ambiente Científico2. Instalação dos MódulosScipy está disponível para diferentes plataformas: Mac OS X, Linux, Windows eSolaris. O procedimento de instalação dos pacotes é bastante simples: Os bináriospodem ser baixados em http://new.scipy.org/download.html ou apt-get install python-numpy apt-get install python-scipy3. Funcionalidades do ScipyScipy é organizado em subpacotes abrangendo diferentes domínios da computaçãocientífica. Scipy provê diversos algoritmos para cálculo científico. Os módulos contidos
  • 3. no Scipy podem ser utilizados para realizar diversos cálculos avançados. A título deexemplificação, alguns módulos interessantes são: Interpolate: Funções de Interpolação Linalg: Rotinas para Álgebra Linear Linsolve Resolução de sistemas de equações lineares Optimize: Rotinas de Otimização Signal: Rotinas para Processamento de sinais Stats: funções Estatísticas, distribuições discretas e contínuas Io: Entrada/saída de dados Special: Definições de muitas funções matemáticas Weave: Integração C/C++4. Exemplo IntrodutórioPara matar a curiosidade, vamos fazer um exemplo simples antes de falar sobre ascaracterísticas e funcionalidades de cada módulo. Considere que desejamos realizar um teste de correlação linear entre duasvariáveis. Um dos procedimentos usados em estatística para comparação de duasamostras é o teste T-student. Veja como é simples com Scipy: 1. >>> from numpy import array 2. >>> from scipy import stats 3. >>> a = array([1,2,3,4,5]) # amostra a 4. >>> b = array([1,6,5,3,5]) # amostra b 5. >>> print stats.ttest_ind(a,b) Saída: (-0.8770580193070292, 0.40602146154521057)4. Comparação com Matlab Python + NumPy + SciPy = Programming Power Definição de Função em Matlab com muitas restrições Programação com Matlab não orientada a objetos NumPy/SciPy é gratuito mas ainda amplamente usado Há muitos pacotes para geração de gráficos em Python tão bons quanto Matlab5. Explorando o Numpy5.1. ArraysA principal vantagem do Numpy é a entidade Array (ndarrays – Vetores homogêneos(arrays) n-dimensionais). Arrays são semelhantes a listas do Python, exceto que cadaelemento de um array deve ser do mesmo tipo, tipicamente um valor numérico como
  • 4. float ou int. Arrays fazem operações sobre grande quantidade de dados mais rápido esão geralmente muito mais eficientes que listas. Observe o exemplo a seguir: 1. >>> import numpy 2. >>> print numpy.array([1,2,3,4,5]) Saída: [1 2 3 4 5] 3. >>> print numpy.arange(0.,4.5,.5) Saída: [ 0. 0.5 1. 1.5 2. 2.5 3. 3.5 4. ]5.2. MatrizesCom Numpy, torna-se possível definir matrizes e efetuar várias operações sobre elas.Uma matriz é um tipo específico de array bidimensional a qual possui um conjuntooperações relacionadas. Veja o seguinte exemplo: 1. >>> import numpy 2. >>> l = [[1,2,3],[4,5,6],[7,8,9]] 3. >>> m = numpy.matrix(l) 4. >>> m_t = m.transpose() 5. >>> r = numpy.matrix([[1, 2, 3]]) 6. >>> n = r*m5.3. Operações com Arrays e Matrizesnumpy.zeros((M,N)) Vetor MxN de zerosnumpy.ones((M,N)) Vetor MxN de umsnumpy.empty((M,N)) Vetor MxN vazio (qualquer valor)numpy.zeros_like(m) Vetor de zeros com formato de mnumpy.ones_like(m) Vetor de ums com formato de mnumpy.empty_like(m) Vetor de vazio com formato de mnumpy.random.random((M,N)) Vetor com valores aleatóriosnumpy.identity(N) Matriz Identidade, N x Nnumpy.array([(1,2,3),(4,5,6)]) Especifica os valores da matriznumpy.matrix([[1,2,3],[4,5,6]]) Especifica os valores da matriznumpy.arange(0.,1.,.3) Vetor com Inicio I, fim F, passo Pnumpy.linspace(0.1, 1, 10) Vetor com N valores de I à F Tabela 1. Criação de Vetores
  • 5. a.sum() Somatório dos itemsa.min() Valor mínimoa.max() Valor máximoa.mean() Média aritméticaa.std() Desvio Padrãoa.var() Variânciaa.median() Medianaa.trace() Traçoa.size() N° de elementosa.shape() Formato (dimensões)a.transpose() Matriz transpostaa.copy() Retorna cópiaa.fill(valor) Preenche com valor Tabela 1. Métodos de um vetor a (numpy.ndarray)A-B, A+B, A*B, A/B,A**2 Operações elemento à elementonumpy.dot(A,B) ou mat(A)*mat(B) Produto matricialnumpy.concatenate((A,B), axis=0) Concatena vetoresA[0] 1° elementoA[i][j] ou A[i,j] (linha i, coluna j)x[2:5] Subvetor [x[2],x[3],x[4]]x[:5] Subvetor [x[0],...,x[4]]x[2:] Subvetor [x[2],...x[N]]x[numpy.where(x>7)] Elementos em x maiores que 7 Tabela 1. Operações entre vetores
  • 6. 6. Explorando o Scipy6.1. Estatísticas com ScipyScipy possui um vasto número de rotinas básicas de estatística. Todas as funçõesestatísticas estão situadas no subpcote scipy.stats e uma lista completa das funçõesdisponíveis pode ser obtida usando-se info(stats).6. Outros módulos interessantes6.1. iPython Shell melhorado para Python com diversos recursos para programação interativa,incluindo também interação fácil com PyLab.6.1. PyLabO PyLab é um módulo da linguagem Python que possibilita a geração de gráficos deduas dimensões de excelente qualidade, permitindo edição interativa, animações,inúmeros tipos de gráficos diferentes, anotações em sintaxe Latex e salvamento dasimagens geradas em diversos formatos diferentes. A sintaxe de criação e manipulaçãodas imagens será familiar para quem já trabalhou com o software comercial Matlab, masprovendo muito mais capacidades, além de uma interface baseada em objetos, paraquem conhece a técnica. O PyLab permite trabalhar com diversos tipos de gráficos diferentes, entre eles:gráficos de funções, múltiplos gráficos, histogramas, funções discretas, disco, barra, etc.Fornece funções para a customização dos gráficos, podendo trabalhar com diversasfontes diferentes, cores, tamanhos de página, e muito mais. Além disso, existem funçõespara a manipulação e análise de imagens e sinais. Enfim, um módulo bastante útil paravisualização de resultados de problemas matemáticos com Python. A seguir, um simplesexemplo de utilização do PyLab:
  • 7. Figura 1. Exemplo de uso do PyLab7. MatplotlibMatplotlib é uma biblioteca para Python de gráficos 2D que permite fazer figuras comqualidade de publicação de uma forma simples. http://matplotlib.sourceforge.net.7.1. matplotlib.pyplotMatplotlib.pyplot é uma coleção de comandos de funções de estilo eu fazem omatplotlib se comportar como MATLAB. Veja um exemplo muito simples: Figura 1. Exemplo de uso do matplotlib