Como remover vírus de pendrive que converte arquivos e pastas em atalhos
Orientação a Objetos – parte 2 - Numpy.pdf · ... Tangente de cada elemento do array ... Seno...
Transcript of Orientação a Objetos – parte 2 - Numpy.pdf · ... Tangente de cada elemento do array ... Seno...
![Page 1: Orientação a Objetos – parte 2 - Numpy.pdf · ... Tangente de cada elemento do array ... Seno hiperbólico deg2rad(x) Converte de graus para radianos ... 90. 120. 150. 180. 210.](https://reader031.fdocument.pub/reader031/viewer/2022020318/5c41127b93f3c338cd78f494/html5/thumbnails/1.jpg)
NumpyARRAY E MATRIZES
![Page 2: Orientação a Objetos – parte 2 - Numpy.pdf · ... Tangente de cada elemento do array ... Seno hiperbólico deg2rad(x) Converte de graus para radianos ... 90. 120. 150. 180. 210.](https://reader031.fdocument.pub/reader031/viewer/2022020318/5c41127b93f3c338cd78f494/html5/thumbnails/2.jpg)
Numpy e Scipy
Numpy é um módulo do Python que oferece 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
Os módulos Numpy e Scipy podem ser baixados em:
http://www.scipy.org/download
![Page 3: Orientação a Objetos – parte 2 - Numpy.pdf · ... Tangente de cada elemento do array ... Seno hiperbólico deg2rad(x) Converte de graus para radianos ... 90. 120. 150. 180. 210.](https://reader031.fdocument.pub/reader031/viewer/2022020318/5c41127b93f3c338cd78f494/html5/thumbnails/3.jpg)
Numpy e Scipy
Existem ambientes que já vêm com o módulo Numpy e
instalado, como o ambiente de desenvolvimento
integrado Spyder
Ele pode ser baixado pela iniciativa Anaconda,
disponível em: https://www.continuum.io/downloads
Spyder também já conta com o Matplotlib, além de
Numpy
![Page 4: Orientação a Objetos – parte 2 - Numpy.pdf · ... Tangente de cada elemento do array ... Seno hiperbólico deg2rad(x) Converte de graus para radianos ... 90. 120. 150. 180. 210.](https://reader031.fdocument.pub/reader031/viewer/2022020318/5c41127b93f3c338cd78f494/html5/thumbnails/4.jpg)
Numpy e Scipy
Numpy e Scipy constituem alternativas ao MATLAB. Apesar de o MATLAB ter um grande número de ferramentas adicionais disponíveis, Numpy tem as seguintes vantagens:
Python é uma linguagem mais moderna e completa
É gratuito
É open source
Scipy adiciona ainda mais funcionalidades estilo MATLAB ao Python.
Existe ainda o pacote de plotagem Matplotlib, que provê funções de plotagem parecidas com a do MATLAB.
![Page 5: Orientação a Objetos – parte 2 - Numpy.pdf · ... Tangente de cada elemento do array ... Seno hiperbólico deg2rad(x) Converte de graus para radianos ... 90. 120. 150. 180. 210.](https://reader031.fdocument.pub/reader031/viewer/2022020318/5c41127b93f3c338cd78f494/html5/thumbnails/5.jpg)
Numpy
É um pacote que inclui:
Classe array
Classe matrix
Várias funções auxiliares
Para importar:
import numpy
from numpy import *
![Page 6: Orientação a Objetos – parte 2 - Numpy.pdf · ... Tangente de cada elemento do array ... Seno hiperbólico deg2rad(x) Converte de graus para radianos ... 90. 120. 150. 180. 210.](https://reader031.fdocument.pub/reader031/viewer/2022020318/5c41127b93f3c338cd78f494/html5/thumbnails/6.jpg)
Array
A classe Array implementa um arranjo homogêneo mutável, com número arbitrário de elementos
Semelhante ao conhecido tipo list do Python, porém:
Possui métodos mais poderosos
Homogêneo: todos os elementos devem ser do mesmo tipo
Para criar um Array a partir de uma lista:>>> lista = [0,1,2,3,4,5,6,7,8]
>>> a = numpy.array(lista)
>>> print a
[0 1 2 3 4 5 6 7 8]
![Page 7: Orientação a Objetos – parte 2 - Numpy.pdf · ... Tangente de cada elemento do array ... Seno hiperbólico deg2rad(x) Converte de graus para radianos ... 90. 120. 150. 180. 210.](https://reader031.fdocument.pub/reader031/viewer/2022020318/5c41127b93f3c338cd78f494/html5/thumbnails/7.jpg)
Array
Para criar um Array a partir de um intervalo:>>> z = numpy.arange(0.0, 4.5, 0.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.]]
![Page 8: Orientação a Objetos – parte 2 - Numpy.pdf · ... Tangente de cada elemento do array ... Seno hiperbólico deg2rad(x) Converte de graus para radianos ... 90. 120. 150. 180. 210.](https://reader031.fdocument.pub/reader031/viewer/2022020318/5c41127b93f3c338cd78f494/html5/thumbnails/8.jpg)
Array
Para criar um Array só de 0’s:>>> x = numpy.zeros((3,2))
>>> print x
[[0. 0.]
[0. 0.]
[0. 0.]]
Para acessar elementos do Array:>>> a = numpy.array([0,1,2,3,4,5])
>>> print a[2]
2
![Page 9: Orientação a Objetos – parte 2 - Numpy.pdf · ... Tangente de cada elemento do array ... Seno hiperbólico deg2rad(x) Converte de graus para radianos ... 90. 120. 150. 180. 210.](https://reader031.fdocument.pub/reader031/viewer/2022020318/5c41127b93f3c338cd78f494/html5/thumbnails/9.jpg)
Array
Para saber o tipo dos elementos do Array:>>> print a.dtype
int32
Para saber o formato do Array:>>> a = numpy.array([0,1,2,3,4,5])
>>> print a.shape
(6,)
![Page 10: Orientação a Objetos – parte 2 - Numpy.pdf · ... Tangente de cada elemento do array ... Seno hiperbólico deg2rad(x) Converte de graus para radianos ... 90. 120. 150. 180. 210.](https://reader031.fdocument.pub/reader031/viewer/2022020318/5c41127b93f3c338cd78f494/html5/thumbnails/10.jpg)
Array
Percorrendo o Array:>>> a = numpy.array([1,2,3,4,5])
>>> for i in range(a.size):
print a[i],
1 2 3 4 5
Para redimensionar um Array:>>> x = numpy.array([0,1,2,3,4,5,6,7,8])
>>> x.shape = 3,3
>>> print x
[[0 1 2]
[3 4 5]
[6 7 8]]
OU
>>> a = numpy.array([1,2,3,4,5])
>>> for i in a:
print i,
1 2 3 4 5
![Page 11: Orientação a Objetos – parte 2 - Numpy.pdf · ... Tangente de cada elemento do array ... Seno hiperbólico deg2rad(x) Converte de graus para radianos ... 90. 120. 150. 180. 210.](https://reader031.fdocument.pub/reader031/viewer/2022020318/5c41127b93f3c338cd78f494/html5/thumbnails/11.jpg)
Array
Transposta de um Array:>>> x = numpy.array([0,1,2,3,4,5,6,7,8])
>>> x.shape = 3,3
>>> print x
[[0 1 2]
[3 4 5]
[6 7 8]]
>>> t = x.transpose()
>>> print t
[[0 3 6]
[1 4 7]
[2 5 8]]
![Page 12: Orientação a Objetos – parte 2 - Numpy.pdf · ... Tangente de cada elemento do array ... Seno hiperbólico deg2rad(x) Converte de graus para radianos ... 90. 120. 150. 180. 210.](https://reader031.fdocument.pub/reader031/viewer/2022020318/5c41127b93f3c338cd78f494/html5/thumbnails/12.jpg)
Array
Para “achatar” um Array (colocar em uma dimensão):>>> x = numpy.array([0,1,2,3,4,5,6,7,8])
>>> x.shape = 3,3
>>> print x
[[0 1 2]
[3 4 5]
[6 7 8]]
>>> f = x.flatten()
>>> print f
[0 1 2 3 4 5 6 7 8]
![Page 13: Orientação a Objetos – parte 2 - Numpy.pdf · ... Tangente de cada elemento do array ... Seno hiperbólico deg2rad(x) Converte de graus para radianos ... 90. 120. 150. 180. 210.](https://reader031.fdocument.pub/reader031/viewer/2022020318/5c41127b93f3c338cd78f494/html5/thumbnails/13.jpg)
Array
Para criar arrays a partir de outros arrays usando funções:>>> 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) #arredonda com 1 casa decimal
>>> print cos
[1. 0.9 0.5 0.1 -0.4 -0.8 -1. -0.9 -0.7]
![Page 14: Orientação a Objetos – parte 2 - Numpy.pdf · ... Tangente de cada elemento do array ... Seno hiperbólico deg2rad(x) Converte de graus para radianos ... 90. 120. 150. 180. 210.](https://reader031.fdocument.pub/reader031/viewer/2022020318/5c41127b93f3c338cd78f494/html5/thumbnails/14.jpg)
Array
>>> a = numpy.array([0,1,2,3,4,5,6])
>>> print numpy.sqrt(a) #raiz quadrada
[0. 1. 1.41421356 1.73205081 2. 2.23606798 2.44948974]
>>> print numpy.mod(a,2) #resto da divisão por 2
[0 1 0 1 0 1 0]
>>> print numpy.negative(a) #transforma para negativo
[0,-1,-2,-3,-4,-5,-6]
![Page 15: Orientação a Objetos – parte 2 - Numpy.pdf · ... Tangente de cada elemento do array ... Seno hiperbólico deg2rad(x) Converte de graus para radianos ... 90. 120. 150. 180. 210.](https://reader031.fdocument.pub/reader031/viewer/2022020318/5c41127b93f3c338cd78f494/html5/thumbnails/15.jpg)
Outras funções de Array
add(x,y) Adiciona argumentos, elemento por elemento
subtract(x,y) Subtrai argumentos, elemento por elemento
multiply(x,y) Multiplica argumentos, elemento por elemento
divide(x,y) Divide argumentos, elemento por elemento
power(x,y) Elementos do primeiro array, elevado à potência do
segundo array
log2(x) Logaritmo na base 2 do array
exp(x) Exponencial de todos os elementos do array
sin(x) Seno de cada elemento do array
tan(x) Tangente de cada elemento do array
arctan(x) Arcotangente
sinh(x) Seno hiperbólico
deg2rad(x) Converte de graus para radianos
rad2deg(x) Converte de radianos para graus
![Page 16: Orientação a Objetos – parte 2 - Numpy.pdf · ... Tangente de cada elemento do array ... Seno hiperbólico deg2rad(x) Converte de graus para radianos ... 90. 120. 150. 180. 210.](https://reader031.fdocument.pub/reader031/viewer/2022020318/5c41127b93f3c338cd78f494/html5/thumbnails/16.jpg)
Outras funções de Array
add(x,y) Adiciona argumentos, elemento por elemento
subtract(x,y) Subtrai argumentos, elemento por elemento
multiply(x,y) Multiplica argumentos, elemento por elemento
divide(x,y) Divide argumentos, elemento por elemento
power(x,y) Elementos do primeiro array, elevado à potência do
segundo array
log2(x) Logaritmo na base 2 do array
exp(x) Exponencial de todos os elementos do array
sin(x) Seno de cada elemento do array
tan(x) Tangente de cada elemento do array
arctan(x) Arcotangente
sinh(x) Seno hiperbólico
deg2rad(x) Converte de graus para radianos
rad2deg(x) Converte de radianos para graus
As funções que recebem ângulo como parâmetro
esperam que seja fornecido em radianos.
Se você quiser saber o seno de 30º, por exemplo,
faça a conversão:
>>> numpy.sin(numpy.deg2rad(30))
0.5
![Page 17: Orientação a Objetos – parte 2 - Numpy.pdf · ... Tangente de cada elemento do array ... Seno hiperbólico deg2rad(x) Converte de graus para radianos ... 90. 120. 150. 180. 210.](https://reader031.fdocument.pub/reader031/viewer/2022020318/5c41127b93f3c338cd78f494/html5/thumbnails/17.jpg)
Outras funções de Array
greater(x,y) Retorna o valor verdade de (x1 > x2)
greater_equal(x,y) Valor verdade de (x1 >= x2)
less(x,y) Valor verdade de (x1 < x2)
less_equal(x,y) Valor verdade de (x1 <= x2)
not_equal(x,y) Valor verdade de (x1 != x2)
equal(x,y) Valor verdade de (x1 == x2)
maximum(x,y) Retorna o máximo entre cada par de elementos dos
arrays
minimum(x,y) Retorna o mínimo entre cada par de elementos dos
arrays
![Page 18: Orientação a Objetos – parte 2 - Numpy.pdf · ... Tangente de cada elemento do array ... Seno hiperbólico deg2rad(x) Converte de graus para radianos ... 90. 120. 150. 180. 210.](https://reader031.fdocument.pub/reader031/viewer/2022020318/5c41127b93f3c338cd78f494/html5/thumbnails/18.jpg)
Exercícios
1) Faça um programa que crie um array 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 um array bidimensional 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 arrays A, B e C de 5
elementos cada, e calcule o array resultante da expressão:
A + B - C
![Page 19: Orientação a Objetos – parte 2 - Numpy.pdf · ... Tangente de cada elemento do array ... Seno hiperbólico deg2rad(x) Converte de graus para radianos ... 90. 120. 150. 180. 210.](https://reader031.fdocument.pub/reader031/viewer/2022020318/5c41127b93f3c338cd78f494/html5/thumbnails/19.jpg)
Exercícios
4) Faça um programa que crie o array V = [2.5 3 5 6.3 7], e
calcule o array W que contêm o cubo de cada elemento
de V, com 2 casas decimais.
5) Considere os ângulos:
[ 0. 30. 60. 90. 120. 150. 180. 210. 240. 270. 300. 330.]
- Crie um array com estes ângulos.
- Transforme estes ângulos em radianos
- Calcule o seno destes ângulos, com 1 casa decimal
![Page 20: Orientação a Objetos – parte 2 - Numpy.pdf · ... Tangente de cada elemento do array ... Seno hiperbólico deg2rad(x) Converte de graus para radianos ... 90. 120. 150. 180. 210.](https://reader031.fdocument.pub/reader031/viewer/2022020318/5c41127b93f3c338cd78f494/html5/thumbnails/20.jpg)
Matriz
Criando uma matriz:
>>> m = numpy.matrix([[1,2,3],[4,5,6],[7,8,9]])
>>> print m
[[1 2 3]
[4 5 6]
[7 8 9]]
![Page 21: Orientação a Objetos – parte 2 - Numpy.pdf · ... Tangente de cada elemento do array ... Seno hiperbólico deg2rad(x) Converte de graus para radianos ... 90. 120. 150. 180. 210.](https://reader031.fdocument.pub/reader031/viewer/2022020318/5c41127b93f3c338cd78f494/html5/thumbnails/21.jpg)
Matriz
Para acessar um elemento da Matriz:
>>> m = numpy.matrix([[1,2,3],[4,5,6]])
>>> print m[1,2]
6
Para saber o formato da Matriz:
>>> print m.shape
(2,3)
![Page 22: Orientação a Objetos – parte 2 - Numpy.pdf · ... Tangente de cada elemento do array ... Seno hiperbólico deg2rad(x) Converte de graus para radianos ... 90. 120. 150. 180. 210.](https://reader031.fdocument.pub/reader031/viewer/2022020318/5c41127b93f3c338cd78f494/html5/thumbnails/22.jpg)
Matriz
Percorrendo a Matriz:
>>> m = numpy.matrix([[1,2],[3,4]])
>>> l,c = m.shape
>>> for i in range(l):
for j in range(c):
print m[i,j]
1
2
3
4
![Page 23: Orientação a Objetos – parte 2 - Numpy.pdf · ... Tangente de cada elemento do array ... Seno hiperbólico deg2rad(x) Converte de graus para radianos ... 90. 120. 150. 180. 210.](https://reader031.fdocument.pub/reader031/viewer/2022020318/5c41127b93f3c338cd78f494/html5/thumbnails/23.jpg)
Matriz
Transposta de uma Matriz:
>>> m = numpy.matrix([[1,2,3],[4,5,6],[7,8,9]])
>>> tr = m.T
>>> print tr
[[1 4 7]
[2 5 8]
[3 6 9]]
![Page 24: Orientação a Objetos – parte 2 - Numpy.pdf · ... Tangente de cada elemento do array ... Seno hiperbólico deg2rad(x) Converte de graus para radianos ... 90. 120. 150. 180. 210.](https://reader031.fdocument.pub/reader031/viewer/2022020318/5c41127b93f3c338cd78f494/html5/thumbnails/24.jpg)
Matriz
Transposta de uma Matriz:
>>> m = numpy.matrix([[1,2,3],[4,5,6],[7,8,9]])
>>> tr = m.T
>>> print tr
[[1 4 7]
[2 5 8]
[3 6 9]]
Atenção: T maiúsculo
![Page 25: Orientação a Objetos – parte 2 - Numpy.pdf · ... Tangente de cada elemento do array ... Seno hiperbólico deg2rad(x) Converte de graus para radianos ... 90. 120. 150. 180. 210.](https://reader031.fdocument.pub/reader031/viewer/2022020318/5c41127b93f3c338cd78f494/html5/thumbnails/25.jpg)
Matriz
Inversa de uma Matriz:
>>> m = numpy.matrix([[1,2],[3,4]])
>>> inv = m.I
>>> print inv
[[-2. 1. ]
[ 1.5 -0.5]]
Atenção: I maiúsculo
![Page 26: Orientação a Objetos – parte 2 - Numpy.pdf · ... Tangente de cada elemento do array ... Seno hiperbólico deg2rad(x) Converte de graus para radianos ... 90. 120. 150. 180. 210.](https://reader031.fdocument.pub/reader031/viewer/2022020318/5c41127b93f3c338cd78f494/html5/thumbnails/26.jpg)
Matriz
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]]
![Page 27: Orientação a Objetos – parte 2 - Numpy.pdf · ... Tangente de cada elemento do array ... Seno hiperbólico deg2rad(x) Converte de graus para radianos ... 90. 120. 150. 180. 210.](https://reader031.fdocument.pub/reader031/viewer/2022020318/5c41127b93f3c338cd78f494/html5/thumbnails/27.jpg)
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
![Page 28: Orientação a Objetos – parte 2 - Numpy.pdf · ... Tangente de cada elemento do array ... Seno hiperbólico deg2rad(x) Converte de graus para radianos ... 90. 120. 150. 180. 210.](https://reader031.fdocument.pub/reader031/viewer/2022020318/5c41127b93f3c338cd78f494/html5/thumbnails/28.jpg)
Linalg
Para resolver sistema linear:
Suponha o sistema 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.]
![Page 29: Orientação a Objetos – parte 2 - Numpy.pdf · ... Tangente de cada elemento do array ... Seno hiperbólico deg2rad(x) Converte de graus para radianos ... 90. 120. 150. 180. 210.](https://reader031.fdocument.pub/reader031/viewer/2022020318/5c41127b93f3c338cd78f494/html5/thumbnails/29.jpg)
Linalg
Para resolver sistema linear:
Suponha o sistema 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.]
Valores que acompanham
as variáveis
Valores ao lado direito do
sinal de igual
x = 2
y = 3
![Page 30: Orientação a Objetos – parte 2 - Numpy.pdf · ... Tangente de cada elemento do array ... Seno hiperbólico deg2rad(x) Converte de graus para radianos ... 90. 120. 150. 180. 210.](https://reader031.fdocument.pub/reader031/viewer/2022020318/5c41127b93f3c338cd78f494/html5/thumbnails/30.jpg)
Exercícios
6) Faça um programa para resolver o seguinte sistema
linear:
x + 10y - 12z = 120
4x - 2y - 20z = 60
-x + y + 5z = 10
Resposta: [ 340. 50. 60.]