Computação II - cos.ufrj.brbfgoldstein/python/compII/slides/comp2... · Programação Orientada a...
Transcript of Computação II - cos.ufrj.brbfgoldstein/python/compII/slides/comp2... · Programação Orientada a...
![Page 1: Computação II - cos.ufrj.brbfgoldstein/python/compII/slides/comp2... · Programação Orientada a Objetos Tratamento de Exceções Módulos Manipulação de Arquivos Interface Gráfica](https://reader030.fdocument.pub/reader030/viewer/2022021808/5becc51c09d3f270058b7edb/html5/thumbnails/1.jpg)
Computação II
MAB 225 - EE2/ET2/ER2
SciPy & NumPyBrunno Goldstein
www.lam.ufrj.br/~bfgoldstein
![Page 2: Computação II - cos.ufrj.brbfgoldstein/python/compII/slides/comp2... · Programação Orientada a Objetos Tratamento de Exceções Módulos Manipulação de Arquivos Interface Gráfica](https://reader030.fdocument.pub/reader030/viewer/2022021808/5becc51c09d3f270058b7edb/html5/thumbnails/2.jpg)
● Programação Orientada a Objetos
● Tratamento de Exceções
● Módulos
● Manipulação de Arquivos
● Interface Gráfica (Tkinter)
● Biblioteca Numérica (Numpy)
Ementa
2
![Page 3: Computação II - cos.ufrj.brbfgoldstein/python/compII/slides/comp2... · Programação Orientada a Objetos Tratamento de Exceções Módulos Manipulação de Arquivos Interface Gráfica](https://reader030.fdocument.pub/reader030/viewer/2022021808/5becc51c09d3f270058b7edb/html5/thumbnails/3.jpg)
● Programação Orientada a Objetos
● Tratamento de Exceções
● Módulos
● Manipulação de Arquivos
● Interface Gráfica (Tkinter)
● Biblioteca Numérica (Numpy)
Ementa
3
![Page 4: Computação II - cos.ufrj.brbfgoldstein/python/compII/slides/comp2... · Programação Orientada a Objetos Tratamento de Exceções Módulos Manipulação de Arquivos Interface Gráfica](https://reader030.fdocument.pub/reader030/viewer/2022021808/5becc51c09d3f270058b7edb/html5/thumbnails/4.jpg)
● Programação Orientada a Objetos
● Tratamento de Exceções
● Módulos
● Manipulação de Arquivos
● Interface Gráfica (Tkinter)
● Biblioteca Numérica (Numpy)
Ementa
4
![Page 5: Computação II - cos.ufrj.brbfgoldstein/python/compII/slides/comp2... · Programação Orientada a Objetos Tratamento de Exceções Módulos Manipulação de Arquivos Interface Gráfica](https://reader030.fdocument.pub/reader030/viewer/2022021808/5becc51c09d3f270058b7edb/html5/thumbnails/5.jpg)
SciPy
● Conjunto de bibliotecas - Stack;
● Dentre as bibliotecas:
○ SciPy - Biblioteca para computação científica;
○ NumPy - Biblioteca para computação científica;
○ Matplotlib - Biblioteca para criação de gráficos 2D.
● Referências https://www.scipy.org/
● Download: http://www.scipy.org/install.html 5
![Page 6: Computação II - cos.ufrj.brbfgoldstein/python/compII/slides/comp2... · Programação Orientada a Objetos Tratamento de Exceções Módulos Manipulação de Arquivos Interface Gráfica](https://reader030.fdocument.pub/reader030/viewer/2022021808/5becc51c09d3f270058b7edb/html5/thumbnails/6.jpg)
SciPY
6
Fonte: http://www.esri.com/~/media/Images/Content/news/arcuser/0115/scipy_2-lg.jpg
![Page 7: Computação II - cos.ufrj.brbfgoldstein/python/compII/slides/comp2... · Programação Orientada a Objetos Tratamento de Exceções Módulos Manipulação de Arquivos Interface Gráfica](https://reader030.fdocument.pub/reader030/viewer/2022021808/5becc51c09d3f270058b7edb/html5/thumbnails/7.jpg)
SciPY
7
Fonte: http://www.esri.com/~/media/Images/Content/news/arcuser/0115/scipy_2-lg.jpg
Não vamos ver
![Page 8: Computação II - cos.ufrj.brbfgoldstein/python/compII/slides/comp2... · Programação Orientada a Objetos Tratamento de Exceções Módulos Manipulação de Arquivos Interface Gráfica](https://reader030.fdocument.pub/reader030/viewer/2022021808/5becc51c09d3f270058b7edb/html5/thumbnails/8.jpg)
Biblioteca SciPy
● Biblioteca de computação científica;
● Possui diversos pacotes como:
○ Special functions (scipy.special)
○ Integration (scipy.integrate)
○ Optimization (scipy.optimize)
○ Interpolation (scipy.interpolate)
○ Fourier Transforms (scipy.fftpack)
○ Signal Processing (scipy.signal)
○ Linear Algebra (scipy.linalg)8
![Page 9: Computação II - cos.ufrj.brbfgoldstein/python/compII/slides/comp2... · Programação Orientada a Objetos Tratamento de Exceções Módulos Manipulação de Arquivos Interface Gráfica](https://reader030.fdocument.pub/reader030/viewer/2022021808/5becc51c09d3f270058b7edb/html5/thumbnails/9.jpg)
Biblioteca SciPy
● Biblioteca de computação científica;
● Possui diversos pacotes como:
○ Special functions (scipy.special)
○ Integration (scipy.integrate)
○ Optimization (scipy.optimize)
○ Interpolation (scipy.interpolate)
○ Fourier Transforms (scipy.fftpack)
○ Signal Processing (scipy.signal)
○ Linear Algebra (scipy.linalg)9
![Page 10: Computação II - cos.ufrj.brbfgoldstein/python/compII/slides/comp2... · Programação Orientada a Objetos Tratamento de Exceções Módulos Manipulação de Arquivos Interface Gráfica](https://reader030.fdocument.pub/reader030/viewer/2022021808/5becc51c09d3f270058b7edb/html5/thumbnails/10.jpg)
Biblioteca Numpy
● Biblioteca de computação científica;
● Responsável por:
○ Tipos de dados - arrays (listas), matrizes, etc;
○ Operações com esses tipos - Indexação, ordenação, etc.
● Possui também funções de Álgebra Linear (contidas na biblioteca SciPy).
10
![Page 11: Computação II - cos.ufrj.brbfgoldstein/python/compII/slides/comp2... · Programação Orientada a Objetos Tratamento de Exceções Módulos Manipulação de Arquivos Interface Gráfica](https://reader030.fdocument.pub/reader030/viewer/2022021808/5becc51c09d3f270058b7edb/html5/thumbnails/11.jpg)
Biblioteca Numpy
● Numpy manipula uma estrutura especial de dados;
● Classe ndarray ou apenas array:
○ Representa a estrutura fornecida pelo Numpy
○ Estrutura parecida com as Listas;
○ Classe possui diversos atributos e funções;
11
![Page 12: Computação II - cos.ufrj.brbfgoldstein/python/compII/slides/comp2... · Programação Orientada a Objetos Tratamento de Exceções Módulos Manipulação de Arquivos Interface Gráfica](https://reader030.fdocument.pub/reader030/viewer/2022021808/5becc51c09d3f270058b7edb/html5/thumbnails/12.jpg)
Biblioteca Numpy● Alguns atributos da classe ndarray:
○ ndarray.ndim - Numero de dimensões do array
■ Ex.: Matriz m x n poussi ndim = 2
○ ndarray.shape - Tupla com o tamanho dos array que representa cada
dimensão
■ Ex.: Matrix m x n possui shape (m,n)
○ ndarray.size - Quantidade de elementos no array
■ Ex.: Matrix m x n possui size = m * n
○ ndarray.dtype - Tipo de dados que estão armazenados no array
■ Ex.: int32, int16, float64 12
![Page 13: Computação II - cos.ufrj.brbfgoldstein/python/compII/slides/comp2... · Programação Orientada a Objetos Tratamento de Exceções Módulos Manipulação de Arquivos Interface Gráfica](https://reader030.fdocument.pub/reader030/viewer/2022021808/5becc51c09d3f270058b7edb/html5/thumbnails/13.jpg)
Biblioteca Numpy
>>> import numpy as np
>>> a = np.arange(15).reshape(3, 5)
>>> a
array([[ 0, 1, 2, 3, 4],
[ 5, 6, 7, 8, 9],
[10, 11, 12, 13, 14]])
>>> a.shape
(3, 5)
>>> a.ndim
2
>>> a.dtype.name
'int64'
>>> a.itemsize
8
>>> a.size
1513
>>> type(a)
<type 'numpy.ndarray'>
>>> b = np.array([6, 7, 8])
>>> b
array([6, 7, 8])
>>> type(b)
<type 'numpy.ndarray'>
![Page 14: Computação II - cos.ufrj.brbfgoldstein/python/compII/slides/comp2... · Programação Orientada a Objetos Tratamento de Exceções Módulos Manipulação de Arquivos Interface Gráfica](https://reader030.fdocument.pub/reader030/viewer/2022021808/5becc51c09d3f270058b7edb/html5/thumbnails/14.jpg)
Biblioteca Numpy
● A ideia então é criar estruturas ndarray e manipulá-las;
● A biblioteca Numpy fornece funções para manipulação
desses dados;
● Vamos ver funções para:
○ Criação de array;
○ Operações básicas;
○ Manipulação da estrutura;
○ AlgLin - Multiplicação de arrays.14
![Page 15: Computação II - cos.ufrj.brbfgoldstein/python/compII/slides/comp2... · Programação Orientada a Objetos Tratamento de Exceções Módulos Manipulação de Arquivos Interface Gráfica](https://reader030.fdocument.pub/reader030/viewer/2022021808/5becc51c09d3f270058b7edb/html5/thumbnails/15.jpg)
Biblioteca Numpy
● Criação de arrays:
○ numpy.arange
○ numpy.array
○ numpy.identity
○ numpy.ones
○ numpy.zeros
15
![Page 16: Computação II - cos.ufrj.brbfgoldstein/python/compII/slides/comp2... · Programação Orientada a Objetos Tratamento de Exceções Módulos Manipulação de Arquivos Interface Gráfica](https://reader030.fdocument.pub/reader030/viewer/2022021808/5becc51c09d3f270058b7edb/html5/thumbnails/16.jpg)
Biblioteca Numpy
● numpy.arange([start, ]stop, [step, ]dtype=None)
○ Cria um array começando 0 (ou em start) até o valor stop incrementando
em 1 (ou em step)
>>> import numpy as np
>>> A = np.arange(10)
>>> A
array([0, 1, 2, 3, 4, 5, 6, 7, 8, 9])
>>>
16
![Page 17: Computação II - cos.ufrj.brbfgoldstein/python/compII/slides/comp2... · Programação Orientada a Objetos Tratamento de Exceções Módulos Manipulação de Arquivos Interface Gráfica](https://reader030.fdocument.pub/reader030/viewer/2022021808/5becc51c09d3f270058b7edb/html5/thumbnails/17.jpg)
Biblioteca Numpy
● numpy.array(object)
○ Cria um array a partir de um outro objeto (listas, tuplas, etc)
>>> import numpy as np
>>> A = np.array([0,1,2,3])
>>> A
array([0, 1, 2, 3])
>>> B = np.array((5,6,7))
>>> B
array([5, 6, 7])
17
![Page 18: Computação II - cos.ufrj.brbfgoldstein/python/compII/slides/comp2... · Programação Orientada a Objetos Tratamento de Exceções Módulos Manipulação de Arquivos Interface Gráfica](https://reader030.fdocument.pub/reader030/viewer/2022021808/5becc51c09d3f270058b7edb/html5/thumbnails/18.jpg)
Biblioteca Numpy
● numpy.identity(n, dtype=None)
○ Cria um array de dimensão n com a matriz identidade.
>>> import numpy as np
>>> I = np.identity(2)
>>> I
array([[ 1., 0.],
[ 0., 1.]])
>>>
18
![Page 19: Computação II - cos.ufrj.brbfgoldstein/python/compII/slides/comp2... · Programação Orientada a Objetos Tratamento de Exceções Módulos Manipulação de Arquivos Interface Gráfica](https://reader030.fdocument.pub/reader030/viewer/2022021808/5becc51c09d3f270058b7edb/html5/thumbnails/19.jpg)
Biblioteca Numpy
● numpy.ones(shape, dtype=None, order='C')
○ Cria um array de dimensão m x n (definido no shape) com todos os
valores iguais a 1
>>> import numpy as np
>>> O = np.ones(10)
>>> O
array([ 1., 1., 1., 1., 1., 1., 1., 1., 1., 1.])
>>> O_2 = np.ones((2,2))
>>> O_2
array([[ 1., 1.],
[ 1., 1.]])
>>> 19
![Page 20: Computação II - cos.ufrj.brbfgoldstein/python/compII/slides/comp2... · Programação Orientada a Objetos Tratamento de Exceções Módulos Manipulação de Arquivos Interface Gráfica](https://reader030.fdocument.pub/reader030/viewer/2022021808/5becc51c09d3f270058b7edb/html5/thumbnails/20.jpg)
Biblioteca Numpy
● numpy.zeros(shape, dtype=None, order='C')
○ Cria um array de dimensão m x n (definido no shape) com todos os
valores iguais a 0
>>> import numpy as np
>>> O = np.zeros(10)
>>> O
array([ 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.])
>>> O_2 = np.zeros((2,2))
>>> O_2
array([[ 0., 0.],
[ 0., 0.]])
>>> 20
![Page 21: Computação II - cos.ufrj.brbfgoldstein/python/compII/slides/comp2... · Programação Orientada a Objetos Tratamento de Exceções Módulos Manipulação de Arquivos Interface Gráfica](https://reader030.fdocument.pub/reader030/viewer/2022021808/5becc51c09d3f270058b7edb/html5/thumbnails/21.jpg)
Biblioteca Numpy
● Operações básicas:
○ numpy.sum
○ numpy.prod
○ numpy.cumsum
○ numpy.cumprod
21
![Page 22: Computação II - cos.ufrj.brbfgoldstein/python/compII/slides/comp2... · Programação Orientada a Objetos Tratamento de Exceções Módulos Manipulação de Arquivos Interface Gráfica](https://reader030.fdocument.pub/reader030/viewer/2022021808/5becc51c09d3f270058b7edb/html5/thumbnails/22.jpg)
Biblioteca Numpy
● numpy.sum(a, axis=None, dtype=None, out=None)
○ Soma os valores de um array para uma determinada dimensão.
>>> import numpy as np
>>> A = np.arange(4)
>>> A
array([0, 1, 2, 3])
>>> A.sum()
6
>>>
22
![Page 23: Computação II - cos.ufrj.brbfgoldstein/python/compII/slides/comp2... · Programação Orientada a Objetos Tratamento de Exceções Módulos Manipulação de Arquivos Interface Gráfica](https://reader030.fdocument.pub/reader030/viewer/2022021808/5becc51c09d3f270058b7edb/html5/thumbnails/23.jpg)
Biblioteca Numpy
● numpy.prod(a, axis=None, dtype=None, out=None)
○ Multiplica os valores de um array para uma determinada dimensão.
>>> import numpy as np
>>> A = np.array([536870910, 536870910, 536870910, 536870910])
>>> np.prod(A)
6917529010461212688
>>>
23
![Page 24: Computação II - cos.ufrj.brbfgoldstein/python/compII/slides/comp2... · Programação Orientada a Objetos Tratamento de Exceções Módulos Manipulação de Arquivos Interface Gráfica](https://reader030.fdocument.pub/reader030/viewer/2022021808/5becc51c09d3f270058b7edb/html5/thumbnails/24.jpg)
Biblioteca Numpy● numpy.cumsum(a, axis=None, dtype=None, out=None)
○ Soma cumulativa dos valores de um array para uma determinada
dimensão;
● numpy.cumprod(a, axis=None, dtype=None, out=None)
○ Multiplicação cumulativa dos valores de um array para uma determinada
dimensão;
24
>>> import numpy as np
>>> A = np.arange(1,4)
>>> A
array([1, 2, 3])
>>> np.cumsum(A)
array([1, 3, 6])
>>> np.cumprod(A)
array([1, 2, 6])
>>>
![Page 25: Computação II - cos.ufrj.brbfgoldstein/python/compII/slides/comp2... · Programação Orientada a Objetos Tratamento de Exceções Módulos Manipulação de Arquivos Interface Gráfica](https://reader030.fdocument.pub/reader030/viewer/2022021808/5becc51c09d3f270058b7edb/html5/thumbnails/25.jpg)
Biblioteca Numpy
● Manipulação da estrutura:
○ numpy.mat
○ numpy.reshape
○ numpy.transpose
25
![Page 26: Computação II - cos.ufrj.brbfgoldstein/python/compII/slides/comp2... · Programação Orientada a Objetos Tratamento de Exceções Módulos Manipulação de Arquivos Interface Gráfica](https://reader030.fdocument.pub/reader030/viewer/2022021808/5becc51c09d3f270058b7edb/html5/thumbnails/26.jpg)
Biblioteca Numpy● numpy.mat(data, dtype=None)
○ Transforma o objeto data em uma matriz
>>> import numpy as np
>>> A = np.array([[1, 2], [3, 4]])
>>> A
array([[1, 2],
[3, 4]])
>>> M = np.mat(A)
>>> M
matrix([[1, 2],
[3, 4]])
>>> M[0,1]
2 26
![Page 27: Computação II - cos.ufrj.brbfgoldstein/python/compII/slides/comp2... · Programação Orientada a Objetos Tratamento de Exceções Módulos Manipulação de Arquivos Interface Gráfica](https://reader030.fdocument.pub/reader030/viewer/2022021808/5becc51c09d3f270058b7edb/html5/thumbnails/27.jpg)
Biblioteca Numpy
● numpy.reshape(A, newshape, order='C')
○ Transforma as dimensões do objeto A para o shape = newshape
>>> import numpy as np
>>> A = np.arange(6)
>>> A
array([0, 1, 2, 3, 4, 5])
>>> A.reshape((3, 2))
array([[0, 1],
[2, 3],
[4, 5]])
>>>
27
![Page 28: Computação II - cos.ufrj.brbfgoldstein/python/compII/slides/comp2... · Programação Orientada a Objetos Tratamento de Exceções Módulos Manipulação de Arquivos Interface Gráfica](https://reader030.fdocument.pub/reader030/viewer/2022021808/5becc51c09d3f270058b7edb/html5/thumbnails/28.jpg)
Biblioteca Numpy
● numpy.transpose(data, dtype=None)
○ Faz a permutação das dimensões
>>> import numpy as np
>>> A = np.array([[1, 2], [3, 4]])
>>> A
array([[1, 2],
[3, 4]])
>>> np.transpose(A)
array([[1, 3],
[2, 4]])
>>>
28
![Page 29: Computação II - cos.ufrj.brbfgoldstein/python/compII/slides/comp2... · Programação Orientada a Objetos Tratamento de Exceções Módulos Manipulação de Arquivos Interface Gráfica](https://reader030.fdocument.pub/reader030/viewer/2022021808/5becc51c09d3f270058b7edb/html5/thumbnails/29.jpg)
Biblioteca Numpy
● Operações de algebra linear:
○ numpy.dot
29
![Page 30: Computação II - cos.ufrj.brbfgoldstein/python/compII/slides/comp2... · Programação Orientada a Objetos Tratamento de Exceções Módulos Manipulação de Arquivos Interface Gráfica](https://reader030.fdocument.pub/reader030/viewer/2022021808/5becc51c09d3f270058b7edb/html5/thumbnails/30.jpg)
Biblioteca Numpy
● numpy.dot(data, dtype=None)
○ Multiplicação de dois arrays.
○ Com arrays 2D é equivalente a multiplicação de matrizes.
○ Com arrays 1D é equivalente ao produto interno dos vetores.
30
![Page 31: Computação II - cos.ufrj.brbfgoldstein/python/compII/slides/comp2... · Programação Orientada a Objetos Tratamento de Exceções Módulos Manipulação de Arquivos Interface Gráfica](https://reader030.fdocument.pub/reader030/viewer/2022021808/5becc51c09d3f270058b7edb/html5/thumbnails/31.jpg)
Biblioteca Numpy>>> import numpy as np
>>> np.dot(3, 4)
12
>>> A = np.array([[1, 0], [0, 1]])
>>> A
array([[1, 0],
[0, 1]])
>>> B = np.array([[4, 1], [2, 2]])
>>> B
array([[4, 1],
[2, 2]])
>>> np.dot(A,B)
array([[4, 1],
[2, 2]]) 31
![Page 32: Computação II - cos.ufrj.brbfgoldstein/python/compII/slides/comp2... · Programação Orientada a Objetos Tratamento de Exceções Módulos Manipulação de Arquivos Interface Gráfica](https://reader030.fdocument.pub/reader030/viewer/2022021808/5becc51c09d3f270058b7edb/html5/thumbnails/32.jpg)
Biblioteca Numpy>>> import numpy as np
>>> B = np.array([[4, 1], [2, 2]])
>>> B
array([[4, 1],
[2, 2]])
>>> C = np.array([[2, 2], [2, 2]])
>>> np.dot(B,C)
array([[10, 10],
[ 8, 8]])
>>>
32
![Page 33: Computação II - cos.ufrj.brbfgoldstein/python/compII/slides/comp2... · Programação Orientada a Objetos Tratamento de Exceções Módulos Manipulação de Arquivos Interface Gráfica](https://reader030.fdocument.pub/reader030/viewer/2022021808/5becc51c09d3f270058b7edb/html5/thumbnails/33.jpg)
Exercícios
1. Crie um array com 10 elementos usando a função arange;
2. Transforme esse array de 1D (1x10) para 2D (2x5) usando a função reshape;
3. Crie duas matrizes a partir de dois arrays;
4. Crie duas matrizes e realize a multiplicação das mesmas.
33