Palestra sobre Computação Científica com Python, Scipy e Numpy ministrada durante o XVI Encontro do Grupo de Usuários de Python de Pernambuco, Recife - Pernambuco - 03/09/2011 por Marcel Pinheiro Caraciolo
14. História do Numpy e Scipy
Criado por Eric Jones e Travis Oliphant em
2001
Atualmente mantida por uma comunidade de
usuários
http://conference.scipy.org/scipy2011/
http://enthought.com
Marcel Caraciolo - @marcelcaraciolo
14
15. Numpy e Scipy como ambiente científico
Capaz de competir com outros softwares
matemáticos como Matlab, Octave, R, Scilab, etc.
Ipython - http://ipython.org/
Ferramenta essencial para todo desenvolvedor que vai trabalhar com Python + Scipy + Numpy + Matplotlib
Marcel Caraciolo - @marcelcaraciolo
15
16. Numpy e Scipy como ambiente científico
Comparando com o Matlab
http://www.scipy.org/NumPy_for_Matlab_Users
Scipy/Numpy Matlab
Python com múltiplos argumentos, Definição de função de Matlab bem
valores default, etc. restrita
Programação Orientada a Objetos Programação Procedural
Gratuito Pago
Marcel Caraciolo - @marcelcaraciolo
16
17. Numpy e Scipy como ambiente científico
Mas eu gosto de plotar gráficos!
Matplotlib - http://matplotlib.sourceforge.net/
Python 2D Plotting library
MATLAB plotting framework - matplotlib.pyplot
http://www.scipy.org/Cookbook/Matplotlib
Marcel Caraciolo - @marcelcaraciolo
17
23. Explorando o Numpy
!"#$%&'()%*%*+,-./ e Matrizes
Operação de Arrays
! !"#$%&'#()*+,)-$$%.()#)/%0$12#(
! 3$1%&4+)5#)6#0+$#(
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
Marcel Caraciolo - @marcelcaraciolo
23
24. Explorando o Numpy
Arrays e Matrizes
>>> import numpy as np
>>> a = np.array([1,2,3],
[4,5,6],
[7,8,9])
>>> np.mean(a[0,:]) #media
>>> np.std(a[:,1]) #desvio-padrao
>>> np.min(a) #minimo
>>> np.max(a) #maximo
>>> b = a.T #transposta
>>> m = np.dot(a,b) #multipl.
>>> r = np.random.random((100,00))
>>> i = np.linalg.inv(r) #inversa
>>> eigval, eigvec = numpy.linalg.eig(r) #auto-vetores
Marcel Caraciolo - -@marcelcaraciolo
Marcel Caraciolo @marcelcaraciolo
24
25. Explorando o Scipy
Álgebra Linear (scipy.linalg)
>>> import numpy as np
>>> a = np.array([1,2,3],
[4,5,6],
[7,8,9])
>>> np.mean(a[0,:])
>>> np.std(a[:,1])
>>> np.min(a)
>>> np.max(a)
>>> b = a.T
>>> m = np.dot(a,b)
>>> r = np.random.random((100,00))
>>> i = np.linalg.inv(r)
>>> eigval, eigvec = numpy.linalg.eig(r)
Marcel Caraciolo - @marcelcaraciolo
25
26. Explorando o Scipy
Álgebra Linear (scipy.linalg)
Resolvendo sistemas de equações
>>> import numpy as np
>>> from scipy import linalg
>>> a = np.matrix(‘1 1 1; 1 -2 2; 0 1 2’)
>>> b = np.matrix(‘0;4;2’)
#Resolve a eq ax= b
>>> x = linalg.solve(a,b)
>>> print x
Marcel Caraciolo - @marcelcaraciolo
26
27. Explorando o Scipy
Estatísticas (scipy.stats)
>>> from scipy import stats
# 100 random values from a Poisson distribution with mu = 1.0
>>> s = stats.norm.rvs(loc=0.0,scale=1.0, size=100)
# basic statistics from the matrix.
>>> n, min_max, mean, var, skew, kurt = stats.describe(s)
>>> print("Number of elements: {0:d}".format(n))
>>> print("Minimum: {0:8.6f} Maximum: {1:8.6f}".format(min_max[0], min_max[1]))
>>> print("Mean: {0:8.6f}".format(mean))
>>> print("Variance: {0:8.6f}".format(var))
>>> print("Skew : {0:8.6f}".format(skew))
>>> print("Kurtosis: {0:8.6f}".format(kurt))
Marcel Caraciolo - @marcelcaraciolo
27
28. Explorando o Scipy
Clusterização (scipy.cluster)
!"#$%&'()*+,-./$0(1230"#$%&'4
Algoritmos de Agrupamento
! !"#$%&'($)*+,*!#%-./(,0'$
! !'-/"(,0',1*/.,0/)*$*!"#$%&'()!"#*+,%'-
Atualmente, apenas o K-Means
! ./012,341(+$(%52$&+,6%+1(&71('85$29,',1&%+1
Marcel Caraciolo - @marcelcaraciolo
28
31. Projetos Scikits
Projetos interessantes usando o Scipy/Numpy
Scikit-learn http://scikit-learn.sourceforge.net/stable/
Toolkit de aprendizagem de máquina com algoritmos como PCA, SVM, Bayes, etc.
Divisi2 http://csc.media.mit.edu/docs/divisi2/
Toolkit para representação de matrizes esparsas e uso de SVD
Pandas http://statsmodels.sourceforge.net/
Toolkit para trabalho com dados estatísticos com Scipy e Numpy
Sympy - http://code.google.com/p/sympy/
Toolkit para manipulação para matemática simbólica
*Crab https://github.com/muricoca/crab
Toolkit para construção de sistemas de recomendação com Scipy e Numpy
Marcel Caraciolo - @marcelcaraciolo
31
32. Clusterização (scipy.cluster)
!"#$%&'()*+,-./$0(1230"#$%&'4
Algoritmos de Agrupamento
! !"#$%&'($)*+,*!#%-./(,0'$
! !'-/"(,0',1*/.,0/)*$*!"#$%&'()!"#*+,%'-
Atualmente, apenas o K-Means
! ./012,341(+$(%52$&+,6%+1(&71('85$29,',1&%+1
Marcel Caraciolo - @marcelcaraciolo
32
33. Dúvidas?
1. Documentação
http://docs.scipy.org/doc/
1I. Tutoriais
http://scipy-lectures.github.com/
III. Listas de Discussão
http://www.scipy.org/Mailing_Lists
http://pyscience-brasil.wikidot.com/
IV. Livros
Computação Científica com Python por Flávio Coelho, Editora Lulu.com
Marcel Caraciolo - @marcelcaraciolo
33
34. Computação Científica
com Python
A cobra também é inteligente!
marcel{@orygens, @muricoca} . com
34