Search
Close this search box.
Quais conceitos de NumPy são essenciais para IA?
aprenda NumPy

Posts Relacionados:

NumPy é uma biblioteca extensa e aprender a usá-la pode ser desafiador. Por isso, é importante ter uma noção sobre quais conceitos devem ser priorizados.

Receba nossa newsletter

NumPy para IA

Saber NumPy é fundamental para implementar modelos de inteligência artificial (IA) em Python. Em especial, algoritmos de machine learning desenvolvidos em Python costumam usar NumPy extensamente. Mas NumPy é uma biblioteca grande. Portanto, o objetivo deste post é apresentar uma pequena lista dos conceitos essenciais do NumPy para desenvolver e implementar modelos de IA. Ela não é uma lista completa ou definitiva, seu intuito é apenas servir como um guia.

Arrays NumPy

numpy

O objeto fundamental no NumPy é o ndarray (array n-dimensional), também referido em português como matriz NumPy. No entanto, é importante notar que arrays NumPy não se restringem apenas a matrizes. Arrays NumPy podem ser vetores, matrizes e tensores.

Arrays NumPy são usados para armazenar dados homogêneos em uma estrutura semelhante a uma grade.

				
					import numpy as np 

# um exemplo de array NumPy unidimensional (vetor)
a = np.array([1, 2, 3, 4, 5, 6])
print(a)
# resultado: [1 2 3 4 5 6]

# um exemplo de array NumPy bidimensional (matriz)
b = np.array([[1, 1, 1], [2, 2, 2]])
print(b)
# resultado:
# [[1 1 1]
#  [2 2 2]]

# um exemplo de array NumPy multidimensional com mais de 2 dimensões (tensor)
c = np.array([[[1, 1, 1], [2, 2, 2]], [[2, 3, 4], [5, 5, 6]], [[7, 1, 0], [2, 3, 0]]]) # tensor com dimensão (3, 2, 3)
print(c)
# resultado
# [[[1 1 1]
#   [2 2 2]]

#  [[2 3 4]
#   [5 5 6]]

#  [[7 1 0]
#   [2 3 0]]]
				
			

Criação de Arrays

Para usar NumPy, é fundamental aprender como criar diferentes tipos de arrays (1D, 2D, 3D) usando funções como np.array, np.zeros, np.ones, np.arange, np.linspace.

				
					# Exemplos de criação de Arrays NumPy 

# Array de zeros
arr = np.zeros([2, 3]) # cria um array 2D com 2 linhas e 3 colunas
print(arr)
# resultado:
# [[0. 0. 0.]
#  [0. 0. 0.]]

# Array de valores aleatórios no intervalo [0.0, 1.0) 
arr = np.random.random([3, 2]) # cria um array 2D com 3 linhas e 2 colunas
print(arr)
# resultado:
# [[0.72143211 0.91758018 0.58356666]
#  [0.11679254 0.82994847 0.31913113]]

				
			

Atributos de Arrays

Arrays NumPy possuem vários atributos. Alguns atributos importantes incluem:

shape: retorna as dimensões do array.

				
					meu_arr = np.ones([3, 4, 5])
print(meu_arr.shape) # retorna a forma do array
# resultado: (3, 4, 5)
				
			

dtype: retorna o tipo de dados dos elementos de um array.

				
					
# Atributos de arrays
# dtype
arr1 = np.random.random([5, 2]) 
print(arr1.dtype) # retorna tipo de dados do array
# resultado: float64
				
			

Indexação e fatiamento (slicing)

Saber acessar e manipular elementos em arrays usando indexação e fatiamento é fundamental. No NumPy, a indexação e o fatiamento são semelhantes às operações de mesmos nomes realizadas com listas do Python. Porém, com um array NumPy, elas são estendidas a várias dimensões.

				
					# Indexação
meu_arr = np.array([1, 2, 3, 4, 5])
print(meu_arr[3]) # resultado: 4

# fatiamento
arr = np.random.random([2, 2, 3]) 
print(arr)
# array completo
# [[[0.48480261 0.88037989 0.7019778 ]
#   [0.18887331 0.92411475 0.78802969]]

#  [[0.62619082 0.08463268 0.16367563]
#   [0.72238159 0.26408504 0.6143495 ]]]

print(arr[0,:,0]) # retorna apenas uma fatia do array
# resultado: [0.48480261 0.18887331]
				
			

Reformulação

Reformulação se refere a métodos usados para alterar a forma de um array como reshape, ravel, transpose e squeeze.

				
					# Exemplo de reformulação com reshape
arr1 = np.array([1, 2, 3, 4, 5])
print(arr1.shape) # verifica forma do array
# resultado: (5,)

arr2 = np.reshape(arr1, (arr1.shape[0], 1)) # cria um array com uma nova forma
print(arr2.shape) # verifica forma do array reformulado
# resultado: (5, 1)
				
			

Aritmética Básica

NumPy realiza todas as operações aritméticas elementares com arrays. Elas incluem operações como adição, subtração, multiplicação, divisão e módulo. Essas operações são rotineiras em algorimos de machine learning.

				
					
# Exemplo de aritmética básica
arr1 = np.array([1, 2, 3, 4, 5])
arr2 = np.array([6, 7, 8, 9, 10])

print(np.add(arr1, arr2))  # adiciona 2 arrays
# resultado: [ 7  9 11 13 15]
				
			

Operações Matriciais

Quem já implementou modelos de redes neurais sabe que as multiplicações de arrays são frequentes. NumPy oferece métodos para realizar multiplicação de matrizes, produto escalar e outras operações de álgebra linear.

				
					
# Exemplo de operações de álgebra linear
# produto escalar: np.dot
a = np.array([1, 2, 3])
b = np.array([4, 5, 6])
ex_dot = np.dot(a, b)
print(ex_dot) # resultado: 32

# multiplicação de matrizes: np.matmul
A = np.array([[1, 2], [3, 4]])
B = np.array([[5, 6], [7, 8]])
ex_matmul = np.matmul(A, B)
print(ex_matmul)
# Resultado:
# [[19 22]
#  [43 50]]
				
			

Funções para Cálculos Estatísticos

Além das funções mencionadas acima, é importante saber usar funções integradas para cálculos estatísticos (média, desvio padrão, etc.).

				
					# Exemplo de função para cálculo estatístico
meu_arr = np.array([20, 33, 50, 11, 60])
print(np.mean(meu_arr)) # calcula calcula média
# resultados: 34.8 
				
			

Broadcasting

Broadcasting é um conceito fundamental em NumPy. Ele possibilita realizar operações em arrays de diferentes formas. No exemplo abaixo, adicionamos uma matriz 2D e uma matriz 1D. Para isso funcionar, o NumPy usa o conceito de broadcasting: o ‘array_1d’ é transmitido para corresponder à forma de ‘array_2d’.

				
					# Exemplo de broadcasting
array_2d = np.array([[1, 2, 3], [4, 5, 6]])
array_1d = np.array([1, 2, 3])
print(array_2d + array_1d)
# resultado:
# [[2 4 6]
#  [5 7 9]]
				
			

Assim, a operação envolvendo matrizes de diferentes dimensões é realizada sem problemas.

Vetorização

Por fim, é sempre importante mencionar o conceito de vetorização, tratado previamente aqui. A vetorização em NumPy refere-se ao processo de executar operações em matrizes inteiras de uma só vez, em vez de usar loops explícitos. Essa abordagem geralmente é muito mais rápida e eficiente, especialmente para grandes conjuntos de dados. Algoritmos de machine learning usam vetorização frequentemente. Consequentemente, é fundamental aprender como usá-la eficientemente.

Encontrou algum erro ou quer fazer uma sugestão? Por favor, entre em contato usando nosso formulário de contatos.

Imagem com IA Generativa – Dia 199

IA generativa img 199

Arte com IA generativa: imagem do dia

Todos os dias, postamos um exemplo de imagem artística gerada com inteligência artificial.

Tutoriais

Postagens Mais Recentes

Outras Postagens Que Podem Interessar

Veja
Mais

Fique em contato

Se inscreva para receber nossa newsletter com novidades.

aprendiz artificial