Introdução
Este laboratório abordará alguns dos recursos avançados do NumPy, incluindo álgebra linear, geração de números aleatórios e arrays mascarados (masked arrays).
Álgebra Linear com NumPy
NumPy possui um conjunto abrangente de funções para operações de álgebra linear. Aqui estão alguns exemplos:
Abrir o Shell Python
Abra o shell Python digitando o seguinte comando no terminal.
python3
Produto Escalar (Dot Product)
O produto escalar de dois arrays pode ser calculado usando a função np.dot(). O produto escalar de dois arrays A e B é definido como a soma do produto dos elementos correspondentes de A e B.
import numpy as np
## criar dois arrays
a = np.array([1, 2])
b = np.array([3, 4])
## calcular o produto escalar
dot_product = np.dot(a, b)
print(dot_product) ## Output: 11
Multiplicação de Matrizes
A multiplicação de matrizes pode ser realizada usando o operador @ ou a função np.matmul().
Por favor, leia os seguintes exemplos com atenção.
## criar duas matrizes
A = np.array([[1, 2], [3, 4]])
B = np.array([[5, 6], [7, 8]])
## multiplicação de matrizes
C = A @ B
print(C) ## Output: [[19 22], [43 50]]
Você também pode obter os resultados de outra forma.
## criar duas matrizes
A = np.array([[1, 2], [3, 4]])
B = np.array([[5, 6], [7, 8]])
## multiplicação de matrizes
C = np.matmul(A,B)
print(C) ## Output: [[19 22], [43 50]]
Determinante e Inversa
O determinante e a inversa de uma matriz podem ser calculados usando as funções np.linalg.det() e np.linalg.inv(), respectivamente.
## criar uma matriz
A = np.array([[1, 2], [3, 4]])
## calcular determinante e inversa
det_A = np.linalg.det(A)
inv_A = np.linalg.inv(A)
print(det_A) ## Output: -2.0
print(inv_A) ## Output: [[-2. 1. ], [ 1.5 -0.5]]
Exercício
Agora é sua vez de construir dois arrays e usar a função np.dot() para calcular o produto escalar. Use @ ou np.matmul() para calcular a multiplicação de matrizes e use as funções np.linalg.det() e np.linalg.inv() para calcular o determinante da matriz e a matriz inversa.
Geração de Números Aleatórios
NumPy fornece várias funções para gerar números aleatórios. Aqui estão alguns exemplos:
Gerando Números Aleatórios
A função np.random.rand() pode ser usada para gerar números aleatórios entre 0 e 1.
## gerar uma matriz 2x2 de números aleatórios
a = np.random.rand(2, 2)
print(a) ## Output: [[0.43584547 0.37752558], [0.08936734 0.65526767]]
Gerando Inteiros Aleatórios
A função np.random.randint() pode ser usada para gerar inteiros aleatórios entre dois números especificados.
## gerar um array de inteiros aleatórios entre 1 e 10
a = np.random.randint(1, 10, size=(3, 3))
print(a) ## Output: [[8 7 3], [3 3 7], [8 8 7]]
Gerando Distribuição Normal
A função np.random.normal() pode ser usada para gerar números de uma distribuição normal.
## gerar um array de números de uma distribuição normal
a = np.random.normal(0, 1, size=(2, 2))
print(a) ## Output: [[ 1.28418331 -0.90564647], [-0.76477896 1.69903421]]
Exercício
Agora, por favor, siga as funções acima para completar a saída de número aleatório, inteiro aleatório e distribuição normal. Por favor, complete este exercício.
Arrays Mascarados
Arrays mascarados são arrays que possuem uma máscara anexada a eles. A máscara é um array de valores booleanos que indicam quais elementos do array devem ser mascarados (ocultos). NumPy fornece o módulo np.ma para trabalhar com arrays mascarados.
Criando um Array Mascarado
Um array mascarado pode ser criado usando a função np.ma.masked_array().
## criar um array com alguns valores mascarados
a = np.ma.masked_array([1, 2, 3, 4], mask=[True, False, False, True])
print(a) ## Output: [-- 2 3 --]
Aplicando uma Máscara
Uma máscara pode ser aplicada a um array usando a função np.ma.masked_where().
## criar um array
a = np.array([1, 2, 3, 4])
## criar uma máscara
mask = a > 2
## aplicar a máscara
b = np.ma.masked_where(mask, a)
print(b) ## Output: [1 2 -- --]
Mascarando Valores Inválidos
Arrays mascarados podem ser usados para lidar com valores inválidos, como NaNs (not a number - não é um número) ou infinitos.
## criar um array com alguns valores inválidos
a = np.array([1, np.nan, np.inf, 4])
## criar um array mascarado
b = np.ma.masked_invalid(a)
print(b) ## Output: [1.0 -- -- s4.0]
Exercício
Agora, por favor, use o módulo np.ma fornecido pelo NumPy para completar a criação de um array mascarado. Ao mesmo tempo, use a função np.ma.masked_where() para aplicar a máscara ao array e, finalmente, use np.ma.masked_invalid() para lidar com valores inválidos. Por favor, complete este exercício.
Resumo
Parabéns por completar este experimento!
Neste tutorial, cobrimos alguns dos tópicos avançados em NumPy, incluindo álgebra linear, geração de números aleatórios e arrays mascarados. Esses recursos são úteis para muitas aplicações, incluindo análise de dados e computação científica.
Por favor, continue trabalhando duro!



