Baixe o app para aproveitar ainda mais
Prévia do material em texto
Módulo NumPy Numpy e Scipy ● Numpy é um módulo do Python que oference recursos para manipulação de arrays e matrizes, além funções de álgebra linear. ● Outro módulo usado é o Scipy (Scientific Python) , que extende as funcionalidades do Numpy com funções para minimização, regressão, transformações de Fourier e outras. ● Numpy e Scipy podem ser baixados em: http://www.scipy.org/download Numpy e Scipy ● Numpy and Scipy são uma alternativa para o MATLAB. Apesar de o MATLAB ter um grande número de ferramentas adicionais disponíveis, Numpy tem a vantagem de que Python é uma linguagem mais moderna e completa, é de graça, e é open source. Scipy adiciona ainda mais funcionalidades estilo MATLAB ao Python. ● Python também se aproxima mais ainda do MATLAB com o pacote de plotagem Matplotlib, que provê funções de plotagem parecidas com a do MATLAB. Numpy ● É um pacote que inclui; – Classe array – Classe matrix – Várias funções auxiliares ● Para importar: – Import numpy – Form numpy import * Array ● A classe Array implementa um arranjo homogêneo mutável, com número arbitrário de elementos, semelhante à lista comum do Python, porém mais poderosa. ● Para criar um Array a partir de uma lista: a = numpy.array([0, 1, 2, 3, 4, 5, 6, 7, 8]) print a [0 1 2 3 4 5 6 7 8] Array ● Para criar um Array a partir de um intervalo: z = numpy.arange(0., 4.5, .5) print z [ 0. 0.5 1. 1.5 2. 2.5 3. 3.5 4. ] ● Para criar um Array só de 1's: y = numpy.ones((2, 3)) print y [[ 1. 1. 1.] [ 1. 1. 1.]] Array ● Para criar um Array só de 0's: x = numpy.zeros((3,2)) print x [[ 0. 0.] [ 0. 0.] [ 0. 0.]] Array ● Para acessar elementos do Array: a = numpy.array([0, 1, 2, 3, 4, 5, 6, 7, 8]) print a[1] 1 ● Para saber o tipo dos elementos do Array: print a.dtype int32 Array ● Para saber o formato do Array: a = numpy.array([0, 1, 2, 3, 4, 5, 6, 7, 8]) print a.shape (9,) Array ● Percorrendo o Array: x = a = numpy.array([1, 2, 3, 4, 5, 6]) for i in range(a.size): print a[i] 1 2 3 4 5 6 Array ● Para redimensionar um Array: a = numpy.array([0,1,2,3,4,5,6,7,8]) a.shape = 3,3 print a [[0 1 2] [3 4 5] [6 7 8]] Array ● Transposta de um Array: Se a for: [[0 1 2] [3 4 5] [6 7 8]] t = a.transpose() print t [[0 3 6] [1 4 7] [2 5 8]] Array ● Para “achatar” um Array: Se a for: [[0 1 2] [3 4 5] [6 7 8]] f = a.flatten() print f [0 1 2 3 4 5 6 7 8] Array ● Para criar arrays a partir de outros arrays usando funções: Suponha z = [ 0. 0.5 1. 1.5 2. 2.5 3. 3.5 4. ] c = numpy.cos(z) //usando a função cosseno print c [ 1. 0.87758256 0.54030231 0.0707372 -0.41614684 -0.80114362 -0.9899925 -0.93645669 -0.65364362] cos = numpy.round(c,1) //arredondando com 1 casa decimal print cos [ 1. 0.9 0.5 0.1 -0.4 -0.8 -1. -0.9 -0.7] Array a = numpy.array([0,1,2,3,4,5,6,7,8]) print numpy.sqrt(a) //raíz quadrada [ 0. 1. 1.41421356 1.73205081 2. 2.23606798 2.44948974 2.64575131 2.82842712] print numpy.mod(a,2) // resto da divisão por 2 [0 1 0 1 0 1 0 1 0] print numpy.negative(a) //transforma pra negativo [ 0 -1 -2 -3 -4 -5 -6 -7 -8] Outras Funções de Array Outras Funções de Array Outras Funções de Array Exercícios 1) Faça um programa que crie um vetor que representa uma progressão aritmética de 10 elementos, sendo o elemento inicial igual a 1 e razão igual à 3. 2) Faça um programa que crie uma matriz 3x3 em que a diagonal principal e a secundária contém 1's e o resto contém 0. 3) Faça um programa que crie três vetores A, B e C de 5 elementos cada, e calcule o vetor resultante da expressão: A + B - C 4) Faça um programa que crie o vetor V = [2.5 3 5 6.3 7], e calcule o vetor W que contêm o cubo de cada elemento de V, com 2 casas decimais. 5) Considere os ângulo: [ 0. 30. 60. 90. 120. 150. 180. 210. 240. 270. 300. 330.] - crie um vetor com estes ângulos. - transforme estes ângulos em radianos - calcule o seno destes ângulos, com 1 casa decimal Matrix ● Criando uma matriz: Z = numpy.matrix([[1,2,3],[4,5,6],[7,8,9]]) print Z [[1 2 3] [4 5 6] [7 8 9]] Matriz ● Para acessar um elemento da Matriz: x = numpy.matriz([[1,2,3],[4,5,6]]) print x[1,2] 6 ● Para saber o número de dimensões da Matriz: print x.ndim 2 ● Para saber o formato da Matriz: print x.shape (2,3) Matrix ● Percorrendo a Matriz: x = numpy.matrix([[1,2,3],[4,5,6]]) l,c = x.shape for i in range(l): for j in range(c): print x[i,j] 1 2 3 4 5 6 Matrix ● Transposta de uma matriz: Se Z for: [[1 2 3] [4 5 6] [7 8 9]] tr = Z.T print tr [[1 4 7] [2 5 8] [3 6 9]] Matrix ● Inversa de uma matriz: Se Z for: [[1 2 3] [4 5 6] [7 8 9]] inv = Z.I print inv [[ -4.50359963e+15 9.00719925e+15 -4.50359963e+15] [ 9.00719925e+15 -1.80143985e+16 9.00719925e+15] [ -4.50359963e+15 9.00719925e+15 -4.50359963e+15]] Matrix ● Multiplicação de matrizes: Z = numpy.matrix([[1,2,3],[4,5,6],[7,8,9]]) R = numpy.matrix([[3, 2, 1]]) print R*Z [[18 24 30]] Linalg ● Módulo para álgebra linear ● Para calcular determinante: a = numpy.matrix([[1,2],[3,4]]) print a [[1 2] [3 4]] print numpy.linalg.det(a) -2.0 Linalg ● Para resolver sistema linear: Suponha o sisgtema de equações: 3x + y = 9 x + 2y = 8 a = numpy.matrix([[3,1],[1,2]]) b = numpy.array([9,8]) x = numpy.linalg.solve(a,b) print x [ 2. 3.] Exercícios 1) Faça um programa que crie duas matrizes 3x3 e calcule a soma de suas transpostas. 2) Faça um programa que crie duas matrizes 2x2 e calcule o produto de suas inversas. 3) Faça um programa que crie uma matriz A 3x3 e conte quantos elementos de A são maiores que o det(A). 4) Faça um programa que crie uma matriz 2x2 e verifique se ela é simétrica (A[i][j] = A[j][i]) 5) Faça um programa para resolver o seguinte sistema linear: 4x + y + 2z = 5 3x + 2y + z = 3 x + y + z = 1 Resposta: [ 1.25 -0.5 0.25] Slide 1 Slide 2 Slide 3 Slide 4 Slide 5 Slide 6 Slide 7 Slide 8 Slide 9 Slide 10 Slide 11 Slide 12 Slide 13 Slide 14 Slide 15 Slide 16 Slide 17 Slide 18 Slide 19 Slide 20 Slide 21 Slide 22 Slide 23 Slide 24 Slide 25 Slide 26 Slide 27 Slide 28
Compartilhar