Sbc scipy
-
Upload
silas-santiago -
Category
Technology
-
view
714 -
download
1
Transcript of Sbc scipy
![Page 1: Sbc scipy](https://reader030.fdocumentos.com/reader030/viewer/2022013105/559666f81a28abd7048b45cf/html5/thumbnails/1.jpg)
Computação Científica com Numpy e Scipy
Silas Santiago Lopes Pereira1
1Departamento de Estatística e Computação – Universidade Estadual do Ceará (UECE) Av. Paranjana, 1700 – 60740903 – Fortaleza, CE – Brasil
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ção
Numpy (Numeric Python) é um módulo da linguagem Python que permite trabalhar com vetores e matrizes multidimensionais. Este módulo define os tipos matriz array numérico e também operações básicas sobre estes. Possui diversas ferramentas sofisticadas, 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ódigo Fortran/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 e outros. É também o nome de uma conferência muito popular sobre programação científica com Python, que é patrocinada pela Enthought e outras. Tal biblioteca é projetada para trabalhar juntamente com o módulo Numpy, e provê diversas rotinas numéricas eficientes e de fácil entendimento tais como rotinas para integração numérica e otimização. Scipy é open source e patrocinado por Enthought (http://www.enthought.com). Eric Jones e Travis Oliphant foram dois dos autores originais do SciPy, o qual é agora mantido por uma próspera comunidade de usuários e desenvolvedores.
Figura 1. Eric Jones (á esquerda) e Travis Oliphant (á direita)
![Page 2: Sbc scipy](https://reader030.fdocumentos.com/reader030/viewer/2022013105/559666f81a28abd7048b45cf/html5/thumbnails/2.jpg)
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 tornar significativamente poderosa uma sessão interativa do Python, fornecendo ao usuário comandos de alto nível e classes para manipulação e visualização de dados. Em outras palavras, uma sessão interativa com Scipy transforma-se em uma ambiente de processamento de dados e prototipação de sistemas capaz de competir com outros softwares matemáticos, tais como Matlab, IDL, Octave, R-Lab e Scilab. No entanto, o grande poder de se usar o módulo Scipy no Python é ter-se uma linguagem de programação poderosa e de rápida prototipação e também eficaz no desenvolvimento de programas sofisticados e aplicações especializadas, como aplicações científicas. A figura 1 ilustra o uso do Python no modo interativo com o módulo Scipy:
Figura 1. Scipy como Amb iente Científico
2. Instalação dos Módulos
Scipy está disponível para diferentes plataformas: Mac OS X, Linux, Windows e Solaris. O procedimento de instalação dos pacotes é bastante simples: Os binários podem ser baixados em http://new.scipy.org/download.html ou
� apt-get install python-numpy
� apt-get install python-scipy
3. Funcionalidades do Scipy
Scipy é organizado em subpacotes abrangendo diferentes domínios da computação científica. Scipy provê diversos algoritmos para cálculo científico. Os módulos contidos
![Page 3: Sbc scipy](https://reader030.fdocumentos.com/reader030/viewer/2022013105/559666f81a28abd7048b45cf/html5/thumbnails/3.jpg)
no Scipy podem ser utilizados para realizar diversos cálculos avançados. A título de exemplificaçã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ório
Para matar a curiosidade, vamos fazer um exemplo simples antes de falar sobre as características e funcionalidades de cada módulo.
Considere que desejamos realizar um teste de correlação linear entre duas variáveis. Um dos procedimentos usados em estatística para comparação de duas amostras é 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 Matlab
5. Explorando o Numpy
5.1. Arrays
A principal vantagem do Numpy é a entidade Array (ndarrays – Vetores homogêneos (arrays) n-dimensionais). Arrays são semelhantes a listas do Python, exceto que cada elemento de um array deve ser do mesmo tipo, tipicamente um valor numérico como
![Page 4: Sbc scipy](https://reader030.fdocumentos.com/reader030/viewer/2022013105/559666f81a28abd7048b45cf/html5/thumbnails/4.jpg)
float ou int. Arrays fazem operações sobre grande quantidade de dados mais rápido e sã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. Matrizes Com 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 conjunto operaçõ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*m
5.3. Operações com Arrays e Matrizes
numpy.zeros((M,N))
numpy.ones((M,N))
numpy.empty((M,N))
numpy.zeros_like(m)
numpy.ones_like(m)
numpy.empty_like(m)
numpy.random.random((M,N))
numpy.identity(N)
numpy.array([( 1, 2, 3),( 4, 5, 6)])
numpy.matrix([[ 1, 2, 3],[ 4, 5, 6]])
numpy.arange( 0. , 1. ,. 3)
numpy.linspace( 0.1 , 1, 10)
Vetor MxN de zeros
Vetor MxN de ums
Vetor MxN vazio (qualquer valor)
Vetor de zeros com formato de m
Vetor de ums com formato de m
Vetor de vazio com formato de m
Vetor com valores aleatórios
Matriz Identidade, N x N
Especifica os valores da matriz
Especifica os valores da matriz
Vetor com Inicio I, fim F, passo P
Vetor com N valores de I à F
Tabela 1. Criação de Vetores
![Page 5: Sbc scipy](https://reader030.fdocumentos.com/reader030/viewer/2022013105/559666f81a28abd7048b45cf/html5/thumbnails/5.jpg)
a.sum()
a.min()
a.max()
a.mean()
a.std()
a.var()
a.median()
a.trace()
a.size()
a.shape()
a.transpose()
a.copy()
a.fill(valor)
Somatório dos items
Valor mínimo
Valor máximo
Média aritmética
Desvio Padrão
Variância
Mediana
Traço
N° de elementos
Formato (dimensões)
Matriz transposta
Retorna cópia
Preenche com valor
Tabela 1. Métodos de um vetor a (numpy.ndarray)
A-B, A+B, A*B, A/B,A**2
numpy.dot(A,B) ou mat(A)*mat(B)
numpy.concatenate((A,B), axis=0)
A[0]
A[i][j] ou A[i,j]
x[2:5]
x[:5]
x[2:]
x[numpy.where(x>7)]
Operações elemento à elemento
Produto matricial
Concatena vetores
1° elemento
(linha i, coluna j)
Subvetor [x[2],x[3],x[4]]
Subvetor [x[0],...,x[4]]
Subvetor [x[2],...x[N]]
Elementos em x maiores que 7
Tabela 1. Operações entre vetores
![Page 6: Sbc scipy](https://reader030.fdocumentos.com/reader030/viewer/2022013105/559666f81a28abd7048b45cf/html5/thumbnails/6.jpg)
6. Explorando o Scipy
6.1. Estatísticas com Scipy
Scipy possui um vasto número de rotinas básicas de estatística. Todas as funções estatísticas estão situadas no subpcote scipy.stats e uma lista completa das funções disponíveis pode ser obtida usando-se info(stats).
6. Outros módulos interessantes
6.1. iPython
Shell melhorado para Python com diversos recursos para programação interativa, incluindo também interação fácil com PyLab.
6.1. PyLab
O PyLab é um módulo da linguagem Python que possibilita a geração de gráficos de duas 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 das imagens geradas em diversos formatos diferentes. A sintaxe de criação e manipulação das imagens será familiar para quem já trabalhou com o software comercial Matlab, mas provendo muito mais capacidades, além de uma interface baseada em objetos, para quem 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 diversas fontes diferentes, cores, tamanhos de página, e muito mais. Além disso, existem funções para a manipulação e análise de imagens e sinais. Enfim, um módulo bastante útil para visualização de resultados de problemas matemáticos com Python. A seguir, um simples exemplo de utilização do PyLab:
![Page 7: Sbc scipy](https://reader030.fdocumentos.com/reader030/viewer/2022013105/559666f81a28abd7048b45cf/html5/thumbnails/7.jpg)
Figura 1. Exemplo de uso do PyLab
7. Matplotlib
Matplotlib é uma biblioteca para Python de gráficos 2D que permite fazer figuras com qualidade de publicação de uma forma simples. http://matplotlib.sourceforge.net.
7.1. matplotlib.pyplot
Matplotlib.pyplot é uma coleção de comandos de funções de estilo eu fazem o matplotlib se comportar como MATLAB. Veja um exemplo muito simples:
Figura 1. Exemplo de uso do matplotlib