KEMBAR78
Computação científica com numpy e scipy | PDF
Computação Científica com NumPy e Scipy


                     Silas Santiago L. Pereira
Roteiro
 O que é NumPy e SciPy ?
 Um pouco da história
 NumPy, SciPy como ambiente científico
 Comparação com o Matlab
 Funcionalidades do SciPy
 Instalação dos módulos
 Explorando o NumPy
 Exemplos
 Explorando o SciPy
 Exemplos
 Visualização de Gráficos com PyLab
Sobre mim
 Graduado em Ciência da Computação – UECE
 Mestrando em Ciência da Computação – MACC
 Pesquisador do LADESC
 Interesse em programação, redes, machine learning
O que é NumPy e SciPy ?
 NumPy
   módulo da linguagem Python que permite trabalhar com
   vetores e matrizes multidimensionais.
 Scipy
   é um software open-source para matemática, ciência e
   engenharia
   também o nome de uma conferência muito popular sobre
   programação científica com Python, que é patrocinada pela
   Enthought e outras.
Historia do NumPy e SciPy
 Eric Jones


                   Numpy
                     Criação por Travis Oliphant
                         Unificar a comunidade scipy com um
                         pacote numérico comum
 Travis Oliphant       Baseado em Numeric e NumArray
                   SciPy
                       Criação em 2001 por Eric Jones e
                       Travis Oliphant
                       Atualmente mantido por uma
                       próspera comunidade de usuários e
                       desenvolvedores.
NumPy, SciPy como ambiente científico
 capaz de competir com outros softwares matemáticos, tais como
 Matlab, Octave, R-Lab e Scilab
 iPython
   Shell melhorado para Python com diversos recursos para
   programação interativa, incluindo também interação fácil com PyLab.
Comparação com o 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 gratuitos e ainda amplamente usado
 Há muitos pacotes para geração de gráficos em Python
 tão bons quanto Matlab
  Matplotlib (http://matplotlib.sourceforge.net/)
    Python 2D Plotting library
    Provides a MATLAB-like plotting framework - matplotlib.pyplot
  PyLab (http://www.scipy.org/PyLab)
    Combines pyplot with numpy i nto a simgle namespace
    Convenient for interactive work
Funcionalidades do SciPy
 Organizado em subpacotes, abrangendo vários domínios
 da computação científica
Instalação dos módulos
 Scipy está disponível para diferentes plataformas
   http://new.scipy.org/download.html
   ou
     apt-get install python-numpy
     apt-get install python-scipy
                 http://numpy.scipy.org/
                            http://www.scipy.org
Explorando o NumPy
 Arrays
 Matrizes

                     0   1   2   3   4   5
                     10 11 12 13 14 15
                     20 21 22 23 24 25
                     30 31 32 33 34 35
                     40 41 42 43 44 45
                     50 51 52 53 54 55
Explorando o NumPy
 Array
  ndarrays – Vetores homogêneos (arrays) n-dimensionais
  Semelhantes a listas do Python
  Cada elemento do mesmo tipo (int ou float)
  Geralmente muito mais eficientes que listas
 Exemplo:
Explorando o NumPy
 Matrizes
  é um tipo específico de array bidimensional
  com Numpy, torna-se possível definir matrizes e efetuar várias
  operações sobre elas.
 Exemplo:
Explorando o NumPy
 Operações com Arrays e Matrizes
  Criação de Vetores
   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
Explorando o NumPy
 Operações com Arrays e Matrizes
  Métodos de um vetor a (numpy.ndarray)
   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
Explorando o NumPy
 Operações com Arrays e Matrizes
  Operações entre vetores
   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
Exemplo com NumPy
Explorando o Scipy
 Algebra Linear (scipy.linalg)
 Estatísticas (scipy.stats)
 Clusterização (scipy.cluster)
Álgebra Linear
 subpacote scipy.linalg
   Provê rotinas de álgebra linear
   Funções básicas
     inv, solve, det, norm, lstsq,pinv
 Exemplo
                                         x + y + z =0
                                         x -2y + 2z =1
                                             y + 2z =2
Estatísticas (scipy.stats)
 Vasto número de rotinas básicas de estatística.
   Distribuições contínuas e discretas
   Funções estatísticas
 Exemplo:
Clusterização (scipy.cluster)
 Algoritmos de Agrupamento
  Atualmente, apenas o K-Means (K-Médias)
    Algoritmo de aprendizado não supervisionado
Clusterização (scipy.cluster)
    Exemplo
1


2

3               Exemplos

                           N° de clusters
4

5                           Obtêm matriz de classificação e de distâncias



6
Exemplo: Clusterização
 Gráfico obtido
Visualização de Gráficos com PyLab
 Geração de gráficos 2D de excelente qualidade
  Possibilita
    edição interativa,
    animações,
    diversos tipos de gráficos,
    Anotações com latex
    Salvar em deferentes formatos
    Sintaxe semelhante ao Matlab
Visualização de Gráficos com PyLab
 Exemplo                 Importa os módulos




       Plota o gráfico
Perguntas?




             FIM

Computação científica com numpy e scipy

  • 1.
    Computação Científica comNumPy e Scipy Silas Santiago L. Pereira
  • 2.
    Roteiro O queé NumPy e SciPy ? Um pouco da história NumPy, SciPy como ambiente científico Comparação com o Matlab Funcionalidades do SciPy Instalação dos módulos Explorando o NumPy Exemplos Explorando o SciPy Exemplos Visualização de Gráficos com PyLab
  • 3.
    Sobre mim Graduadoem Ciência da Computação – UECE Mestrando em Ciência da Computação – MACC Pesquisador do LADESC Interesse em programação, redes, machine learning
  • 4.
    O que éNumPy e SciPy ? NumPy módulo da linguagem Python que permite trabalhar com vetores e matrizes multidimensionais. Scipy é um software open-source para matemática, ciência e engenharia também o nome de uma conferência muito popular sobre programação científica com Python, que é patrocinada pela Enthought e outras.
  • 5.
    Historia do NumPye SciPy Eric Jones Numpy Criação por Travis Oliphant Unificar a comunidade scipy com um pacote numérico comum Travis Oliphant Baseado em Numeric e NumArray SciPy Criação em 2001 por Eric Jones e Travis Oliphant Atualmente mantido por uma próspera comunidade de usuários e desenvolvedores.
  • 6.
    NumPy, SciPy comoambiente científico capaz de competir com outros softwares matemáticos, tais como Matlab, Octave, R-Lab e Scilab iPython Shell melhorado para Python com diversos recursos para programação interativa, incluindo também interação fácil com PyLab.
  • 7.
    Comparação com oMatlab 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 gratuitos e ainda amplamente usado Há muitos pacotes para geração de gráficos em Python tão bons quanto Matlab Matplotlib (http://matplotlib.sourceforge.net/) Python 2D Plotting library Provides a MATLAB-like plotting framework - matplotlib.pyplot PyLab (http://www.scipy.org/PyLab) Combines pyplot with numpy i nto a simgle namespace Convenient for interactive work
  • 8.
    Funcionalidades do SciPy Organizado em subpacotes, abrangendo vários domínios da computação científica
  • 9.
    Instalação dos módulos Scipy está disponível para diferentes plataformas http://new.scipy.org/download.html ou apt-get install python-numpy apt-get install python-scipy http://numpy.scipy.org/ http://www.scipy.org
  • 10.
    Explorando o NumPy Arrays Matrizes 0 1 2 3 4 5 10 11 12 13 14 15 20 21 22 23 24 25 30 31 32 33 34 35 40 41 42 43 44 45 50 51 52 53 54 55
  • 11.
    Explorando o NumPy Array ndarrays – Vetores homogêneos (arrays) n-dimensionais Semelhantes a listas do Python Cada elemento do mesmo tipo (int ou float) Geralmente muito mais eficientes que listas Exemplo:
  • 12.
    Explorando o NumPy Matrizes é um tipo específico de array bidimensional com Numpy, torna-se possível definir matrizes e efetuar várias operações sobre elas. Exemplo:
  • 13.
    Explorando o NumPy Operações com Arrays e Matrizes Criação de Vetores 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
  • 14.
    Explorando o NumPy Operações com Arrays e Matrizes Métodos de um vetor a (numpy.ndarray) 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
  • 15.
    Explorando o NumPy Operações com Arrays e Matrizes Operações entre vetores 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
  • 16.
  • 17.
    Explorando o Scipy Algebra Linear (scipy.linalg) Estatísticas (scipy.stats) Clusterização (scipy.cluster)
  • 18.
    Álgebra Linear subpacotescipy.linalg Provê rotinas de álgebra linear Funções básicas inv, solve, det, norm, lstsq,pinv Exemplo x + y + z =0 x -2y + 2z =1 y + 2z =2
  • 19.
    Estatísticas (scipy.stats) Vastonúmero de rotinas básicas de estatística. Distribuições contínuas e discretas Funções estatísticas Exemplo:
  • 20.
    Clusterização (scipy.cluster) Algoritmosde Agrupamento Atualmente, apenas o K-Means (K-Médias) Algoritmo de aprendizado não supervisionado
  • 21.
    Clusterização (scipy.cluster) Exemplo 1 2 3 Exemplos N° de clusters 4 5 Obtêm matriz de classificação e de distâncias 6
  • 22.
  • 23.
    Visualização de Gráficoscom PyLab Geração de gráficos 2D de excelente qualidade Possibilita edição interativa, animações, diversos tipos de gráficos, Anotações com latex Salvar em deferentes formatos Sintaxe semelhante ao Matlab
  • 24.
    Visualização de Gráficoscom PyLab Exemplo Importa os módulos Plota o gráfico
  • 25.