Transmissão em NumPy para aumento de performance
Problema com códigos lentos? Neste post, fique por dentro do conceito de transmissão em NumPy para escrever códigos mais eficientes.

Receba nossa newsletter

Transmissão em NumPy

Quem trabalha com números em Python já sabe: NumPy é essencial. NumPy é uma daquelas bibliotecas fantásticas que se integram perfeitamente ao nosso fluxo de trabalho, fornecendo uma abordagem baseada em matrizes para computação científica. Mas, para aproveitar todo o poder dessa maravilha, precisamos conhecer seus conceitos e ferramentas e entender quando e como usá-los.

Um aspecto crucial que frequentemente encontramos ao realizar operações entre grandes conjuntos de dados organizados como matrizes, vetores ou tensores se refere à necessidade de suas dimensões serem compatíveis. No entanto, a transmissão (broadcasting) em NumPy permite a realização de operações elementares entre matrizes de diferentes formas.

O que é transmissão?

A transmissão em NumPy é uma técnica que permite a realização de operações aritméticas entre matrizes de diferentes formas e tamanhos. Através da transmissão, as matrizes são combinadas em operações aritméticas. A transmissão ocorre sem copiar dados ou alterar as formas das matrizes na memória e contribui para o uso de memória e computação mais eficiente.

Entenda como funciona a transmissão

Ao realizar uma operação entre duas matrizes, o NumPy tentará combinar suas dimensões. Se elas não forem correspondentes, o NumPy tentará encontrar o menor tamanho comum.

A ideia por trás da transmissão é alinhar as matrizes para que elas possam ser operadas em termos de elementos. Portanto, se as matrizes tiverem números diferentes de dimensões, o NumPy preencherá automaticamente a forma da matriz menor. Porém, para que esse preenchimento ocorra, o NumPy exige que as matrizes estejam de acordo com certas regras de compatibilidade.

Para que as dimensões de duas matrizes sejam compatíveis, seus tamanhos devem ser iguais ou um deles deve ser 1. Se essa regra for satisfeita, o NumPy esticará a matriz menor, replicando logicamente os elementos sem copiar dados. A operação é realizada ao longo do primeiro eixo onde as formas correspondem.

Exemplo 1

Nosso primeiro exemplo consiste em multiplicar uma matriz por um escalar. O NumPy transmite o escalar por todos os elementos:

				
					import numpy as np

arr = np.array([1, 2, 3])
res = arr * 4  

print(res)
# Resultado: [ 4  8 12]
				
			

Exemplo 2

No exemplo abaixo, realizamos a adição entre duas matrizes com dimensões diferentes:

				
					import numpy as np 

arr1 = np.array([1, 2, 3]) 
arr2 = np.array([[0], [1], [2]])  
print('dimensões de arr1: ', arr1.shape, 'dimensões de arr2: ', arr2.shape)
# res: dimensões de arr1:  (3,) dimensões de arr2:  (3, 1)

arr3 = arr1 + arr2
print('forma de arr3: ',arr3.shape, '\n', arr3)

'''
res:
dimensões de arr3:  (3, 3) 
 [[1 2 3]
 [2 3 4]
 [3 4 5]]
 '''
				
			

Aqui as dimensões de arr1 e arr2 são diferentes. No entanto, o NumPy estica uma das matrizes para que ambas tenham dimensões compatíveis para operações elementares.

Conclusões

A transmissão é uma ferramenta poderosa do NumPy para realizar operações matemáticas entre matrizes de diferentes dimensões. Ela elimina a necessidade de loops explícitos ou alterações de dimensões, resultando em códigos mais eficientes. A matriz menor é expandida conceitualmente em tempo real, e não na memória. Apesar das vantagens, a transmissão tem limitações. Se as dimensões não forem compatíveis conforme as regras de transmissão, o NumPy gerará um ValueError.

Imagem com IA Generativa – Dia 566

IA generativa - img566

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