SlideShare una empresa de Scribd logo
1 de 7
Descargar para leer sin conexión
Computação Científica com Numpy e Scipy
                              Silas Santiago Lopes Pereira1
1
    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çã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)
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 Ambiente 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
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
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))                          Vetor MxN de zeros
numpy.ones((M,N))                           Vetor MxN de ums
numpy.empty((M,N))                          Vetor MxN vazio (qualquer valor)


numpy.zeros_like(m)                         Vetor de zeros com formato de m
numpy.ones_like(m)                          Vetor de ums com formato de m
numpy.empty_like(m)                         Vetor de vazio com formato de m
numpy.random.random((M,N))                  Vetor com valores aleatórios
numpy.identity(N)                           Matriz Identidade, N x N
numpy.array([(1,2,3),(4,5,6)])              Especifica os valores da matriz
numpy.matrix([[1,2,3],[4,5,6]])             Especifica os valores da matriz


numpy.arange(0.,1.,.3)                      Vetor com Inicio I, fim F, passo P
numpy.linspace(0.1, 1, 10)                  Vetor com N valores de I à F
                             Tabela 1. Criação de Vetores
a.sum()                                 Somatório dos items
a.min()                                 Valor mínimo
a.max()                                 Valor máximo
a.mean()                                Média aritmética
a.std()                                 Desvio Padrão
a.var()                                 Variância
a.median()                              Mediana
a.trace()                               Traço
a.size()                                N° de elementos
a.shape()                               Formato (dimensões)
a.transpose()                           Matriz transposta
a.copy()                                Retorna cópia
a.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 à elemento
numpy.dot(A,B) ou mat(A)*mat(B)         Produto matricial
numpy.concatenate((A,B), axis=0)        Concatena vetores


A[0]                                    1° elemento
A[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. 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:
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

Más contenido relacionado

La actualidad más candente

Curso de Matlab avancado 1
Curso de Matlab avancado 1Curso de Matlab avancado 1
Curso de Matlab avancado 1Gabriel Costa
 
Estrutura de Dados - PILHAS
Estrutura de Dados - PILHASEstrutura de Dados - PILHAS
Estrutura de Dados - PILHASAparicio Junior
 
Curso de Matlab avancado 2
Curso de Matlab avancado 2Curso de Matlab avancado 2
Curso de Matlab avancado 2Gabriel Costa
 
A Linguagem Lua - Uma abordagem inicial
A Linguagem Lua - Uma abordagem inicialA Linguagem Lua - Uma abordagem inicial
A Linguagem Lua - Uma abordagem inicialFlávio Schuindt
 
Tutorial aed iii 009 - algoritmo de ordenação heapsort
Tutorial aed iii   009 - algoritmo de ordenação heapsortTutorial aed iii   009 - algoritmo de ordenação heapsort
Tutorial aed iii 009 - algoritmo de ordenação heapsortFlávio Freitas
 
Tutorial aed iii 007 - algoritmo de ordenação heapsort
Tutorial aed iii   007 - algoritmo de ordenação heapsortTutorial aed iii   007 - algoritmo de ordenação heapsort
Tutorial aed iii 007 - algoritmo de ordenação heapsortFlávio Freitas
 
Material nosso minicurso eprem
Material nosso   minicurso epremMaterial nosso   minicurso eprem
Material nosso minicurso epremFranbfk
 
Tutorial aed iii 008 - algoritmo de ordenação heapsort
Tutorial aed iii   008 - algoritmo de ordenação heapsortTutorial aed iii   008 - algoritmo de ordenação heapsort
Tutorial aed iii 008 - algoritmo de ordenação heapsortFlávio Freitas
 
Curso de Matlab basico
Curso de Matlab basicoCurso de Matlab basico
Curso de Matlab basicoGabriel Costa
 
Course in GNU Octave / Matlab and Applications for Engineers (in Portuguese: ...
Course in GNU Octave / Matlab and Applications for Engineers (in Portuguese: ...Course in GNU Octave / Matlab and Applications for Engineers (in Portuguese: ...
Course in GNU Octave / Matlab and Applications for Engineers (in Portuguese: ...Tiago Oliveira Weber
 
Aulas de estrutura de dados por Ayrton Yagami
Aulas de estrutura de dados por Ayrton YagamiAulas de estrutura de dados por Ayrton Yagami
Aulas de estrutura de dados por Ayrton YagamiAyrton Yagami
 

La actualidad más candente (20)

Ed1
Ed1Ed1
Ed1
 
Scipy meetup-2020-02
Scipy meetup-2020-02Scipy meetup-2020-02
Scipy meetup-2020-02
 
Curso de Matlab avancado 1
Curso de Matlab avancado 1Curso de Matlab avancado 1
Curso de Matlab avancado 1
 
Estrutura de Dados - PILHAS
Estrutura de Dados - PILHASEstrutura de Dados - PILHAS
Estrutura de Dados - PILHAS
 
8. matrizes
8. matrizes8. matrizes
8. matrizes
 
Curso de Matlab avancado 2
Curso de Matlab avancado 2Curso de Matlab avancado 2
Curso de Matlab avancado 2
 
Fj pratica04
Fj pratica04Fj pratica04
Fj pratica04
 
Mini curso-prof-peternelli
Mini curso-prof-peternelliMini curso-prof-peternelli
Mini curso-prof-peternelli
 
Integracao parte1 montera
Integracao parte1 monteraIntegracao parte1 montera
Integracao parte1 montera
 
A Linguagem Lua - Uma abordagem inicial
A Linguagem Lua - Uma abordagem inicialA Linguagem Lua - Uma abordagem inicial
A Linguagem Lua - Uma abordagem inicial
 
Tutorial aed iii 009 - algoritmo de ordenação heapsort
Tutorial aed iii   009 - algoritmo de ordenação heapsortTutorial aed iii   009 - algoritmo de ordenação heapsort
Tutorial aed iii 009 - algoritmo de ordenação heapsort
 
Tutorial aed iii 007 - algoritmo de ordenação heapsort
Tutorial aed iii   007 - algoritmo de ordenação heapsortTutorial aed iii   007 - algoritmo de ordenação heapsort
Tutorial aed iii 007 - algoritmo de ordenação heapsort
 
Material nosso minicurso eprem
Material nosso   minicurso epremMaterial nosso   minicurso eprem
Material nosso minicurso eprem
 
Tutorial aed iii 008 - algoritmo de ordenação heapsort
Tutorial aed iii   008 - algoritmo de ordenação heapsortTutorial aed iii   008 - algoritmo de ordenação heapsort
Tutorial aed iii 008 - algoritmo de ordenação heapsort
 
Curso de Matlab basico
Curso de Matlab basicoCurso de Matlab basico
Curso de Matlab basico
 
Course in GNU Octave / Matlab and Applications for Engineers (in Portuguese: ...
Course in GNU Octave / Matlab and Applications for Engineers (in Portuguese: ...Course in GNU Octave / Matlab and Applications for Engineers (in Portuguese: ...
Course in GNU Octave / Matlab and Applications for Engineers (in Portuguese: ...
 
Linguagem lua
Linguagem luaLinguagem lua
Linguagem lua
 
Usando o winplot
Usando o winplotUsando o winplot
Usando o winplot
 
Dinamicas
DinamicasDinamicas
Dinamicas
 
Aulas de estrutura de dados por Ayrton Yagami
Aulas de estrutura de dados por Ayrton YagamiAulas de estrutura de dados por Ayrton Yagami
Aulas de estrutura de dados por Ayrton Yagami
 

Similar a Sbc scipy

Computação Científica com SciPy - Brevíssimo Tutorial
Computação Científica com SciPy - Brevíssimo TutorialComputação Científica com SciPy - Brevíssimo Tutorial
Computação Científica com SciPy - Brevíssimo TutorialFabio Spanhol
 
SciLab -Tutorial
SciLab -TutorialSciLab -Tutorial
SciLab -Tutorialblogmaxima
 
Cartilha de Octave para Matematica Computacional.pdf
Cartilha de Octave para Matematica Computacional.pdfCartilha de Octave para Matematica Computacional.pdf
Cartilha de Octave para Matematica Computacional.pdfEdkallenn Lima
 
Programando para web com python - Introdução a Python
Programando para web com python - Introdução a PythonProgramando para web com python - Introdução a Python
Programando para web com python - Introdução a PythonAlvaro Oliveira
 
Lógica de Programação
Lógica de ProgramaçãoLógica de Programação
Lógica de ProgramaçãoAdao Chiavelli
 
Aula6 programação
Aula6 programaçãoAula6 programação
Aula6 programaçãoIFPB
 
Curso basico matlab
Curso basico matlabCurso basico matlab
Curso basico matlabEva Santana
 
Curso basico matlab
Curso basico matlabCurso basico matlab
Curso basico matlabMikeNandes
 
Introducao ao python - Luciana Mota
Introducao ao python - Luciana MotaIntroducao ao python - Luciana Mota
Introducao ao python - Luciana Motalucianacmota
 
Oficina: construção de modelos descritivos e preditivos utilizando R
Oficina: construção de modelos descritivos e preditivos utilizando ROficina: construção de modelos descritivos e preditivos utilizando R
Oficina: construção de modelos descritivos e preditivos utilizando RFabrício Barth
 
Apresentação Prof. Luis Fernando Martha e Rafael Rangel
Apresentação Prof. Luis Fernando Martha e Rafael Rangel Apresentação Prof. Luis Fernando Martha e Rafael Rangel
Apresentação Prof. Luis Fernando Martha e Rafael Rangel Opencadd Advanced Technology
 
Python para desenvolvedores - material apoio (parte I)
Python para desenvolvedores - material apoio (parte I)Python para desenvolvedores - material apoio (parte I)
Python para desenvolvedores - material apoio (parte I)Marcelo Barros de Almeida
 
Minicurso Matlab IVSEE 2013 UERJ
Minicurso Matlab IVSEE 2013 UERJMinicurso Matlab IVSEE 2013 UERJ
Minicurso Matlab IVSEE 2013 UERJRenan Prata
 
Introdução a estruturas de dados em python
Introdução a estruturas de dados em pythonIntrodução a estruturas de dados em python
Introdução a estruturas de dados em pythonAlvaro Oliveira
 
Estrutura de dados
Estrutura de dadosEstrutura de dados
Estrutura de dadosgjpbg
 
Apostila estrutura de dados 2
Apostila estrutura de dados 2Apostila estrutura de dados 2
Apostila estrutura de dados 2Leandro Lopes
 

Similar a Sbc scipy (20)

Computação Científica com SciPy - Brevíssimo Tutorial
Computação Científica com SciPy - Brevíssimo TutorialComputação Científica com SciPy - Brevíssimo Tutorial
Computação Científica com SciPy - Brevíssimo Tutorial
 
SciLab -Tutorial
SciLab -TutorialSciLab -Tutorial
SciLab -Tutorial
 
Aula 01
Aula 01Aula 01
Aula 01
 
Cartilha de Octave para Matematica Computacional.pdf
Cartilha de Octave para Matematica Computacional.pdfCartilha de Octave para Matematica Computacional.pdf
Cartilha de Octave para Matematica Computacional.pdf
 
Slide_Python.pdf
Slide_Python.pdfSlide_Python.pdf
Slide_Python.pdf
 
Programando para web com python - Introdução a Python
Programando para web com python - Introdução a PythonProgramando para web com python - Introdução a Python
Programando para web com python - Introdução a Python
 
Lógica de Programação
Lógica de ProgramaçãoLógica de Programação
Lógica de Programação
 
Aula6 programação
Aula6 programaçãoAula6 programação
Aula6 programação
 
Python
PythonPython
Python
 
Pesquisa ppi 2
Pesquisa ppi 2Pesquisa ppi 2
Pesquisa ppi 2
 
Curso basico matlab
Curso basico matlabCurso basico matlab
Curso basico matlab
 
Curso basico matlab
Curso basico matlabCurso basico matlab
Curso basico matlab
 
Introducao ao python - Luciana Mota
Introducao ao python - Luciana MotaIntroducao ao python - Luciana Mota
Introducao ao python - Luciana Mota
 
Oficina: construção de modelos descritivos e preditivos utilizando R
Oficina: construção de modelos descritivos e preditivos utilizando ROficina: construção de modelos descritivos e preditivos utilizando R
Oficina: construção de modelos descritivos e preditivos utilizando R
 
Apresentação Prof. Luis Fernando Martha e Rafael Rangel
Apresentação Prof. Luis Fernando Martha e Rafael Rangel Apresentação Prof. Luis Fernando Martha e Rafael Rangel
Apresentação Prof. Luis Fernando Martha e Rafael Rangel
 
Python para desenvolvedores - material apoio (parte I)
Python para desenvolvedores - material apoio (parte I)Python para desenvolvedores - material apoio (parte I)
Python para desenvolvedores - material apoio (parte I)
 
Minicurso Matlab IVSEE 2013 UERJ
Minicurso Matlab IVSEE 2013 UERJMinicurso Matlab IVSEE 2013 UERJ
Minicurso Matlab IVSEE 2013 UERJ
 
Introdução a estruturas de dados em python
Introdução a estruturas de dados em pythonIntrodução a estruturas de dados em python
Introdução a estruturas de dados em python
 
Estrutura de dados
Estrutura de dadosEstrutura de dados
Estrutura de dados
 
Apostila estrutura de dados 2
Apostila estrutura de dados 2Apostila estrutura de dados 2
Apostila estrutura de dados 2
 

Sbc scipy

  • 1. Computação Científica com Numpy e Scipy Silas Santiago Lopes Pereira1 1 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çã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)
  • 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 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 Ambiente 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
  • 3. 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
  • 4. 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)) Vetor MxN de zeros numpy.ones((M,N)) Vetor MxN de ums numpy.empty((M,N)) Vetor MxN vazio (qualquer valor) numpy.zeros_like(m) Vetor de zeros com formato de m numpy.ones_like(m) Vetor de ums com formato de m numpy.empty_like(m) Vetor de vazio com formato de m numpy.random.random((M,N)) Vetor com valores aleatórios numpy.identity(N) Matriz Identidade, N x N numpy.array([(1,2,3),(4,5,6)]) Especifica os valores da matriz numpy.matrix([[1,2,3],[4,5,6]]) Especifica os valores da matriz numpy.arange(0.,1.,.3) Vetor com Inicio I, fim F, passo P numpy.linspace(0.1, 1, 10) Vetor com N valores de I à F Tabela 1. Criação de Vetores
  • 5. a.sum() Somatório dos items a.min() Valor mínimo a.max() Valor máximo a.mean() Média aritmética a.std() Desvio Padrão a.var() Variância a.median() Mediana a.trace() Traço a.size() N° de elementos a.shape() Formato (dimensões) a.transpose() Matriz transposta a.copy() Retorna cópia a.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 à elemento numpy.dot(A,B) ou mat(A)*mat(B) Produto matricial numpy.concatenate((A,B), axis=0) Concatena vetores A[0] 1° elemento A[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 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:
  • 7. 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