Broadcasting

Introdução ao NumPy

Izzy Weber

Core Curriculum Manager, DataCamp

Introdução ao broadcasting

 

Gráfico mostrando dois arrays com shapes diferentes sendo somados

Introdução ao NumPy

Broadcasting de escalar

Imagem mostrando um array 2D somado ao número 2  

Imagem mostrando um array 2D somado a qualquer array cheio de doses com o mesmo shape

Introdução ao NumPy

Regras de compatibilidade

  • O NumPy compara conjuntos de dimensões do array da direita para a esquerda  

 

 

 

 

Gráfico aplicando as regras de compatibilidade a shapes (10, 5) e (10, 1)

Introdução ao NumPy

Regras de compatibilidade

  • O NumPy compara conjuntos de dimensões da direita para a esquerda
  • Duas dimensões são compatíveis quando...
    • Uma delas tem tamanho um ou
    • Têm o mesmo tamanho
  • Todos os conjuntos de dimensões devem ser compatíveis

 

Gráfico aplicando as regras de compatibilidade a shapes (10, 5) e (10, 1)

Introdução ao NumPy

Broadcastável ou não?

 

Shapes broadcastáveis:

  • (10, 5) e (10, 1)
  • (10, 5) e (5, )

 

Shapes não broadcastáveis:

  • (10, 5) e (5, 10)
  • (10, 5) e (10, )
Introdução ao NumPy

Broadcasting por linha

Um array de shape (2, 5) sendo somado a um array de shape (1, 5)

 

array = np.arange(10).reshape((2, 5))
array + np.array([0, 1, 2, 3, 4])
array([[ 0,  2,  4,  6,  8],
       [ 5,  7,  9, 11, 13]])
Introdução ao NumPy

Broadcasting por linha

 

 

Um array de shape (2, 5) sendo somado a um array de shape (2, 5)

Introdução ao NumPy

Broadcasting incompatível

 

Gráfico mostrando que somar um array de shape (2, 5) a um de shape (2,) gera ValueError.

 

array = np.arange(10).reshape((2, 5))
array + np.array([0, 1])
ValueError: operands could not be broadcast together with shapes (2,5) (2,) 
Introdução ao NumPy

Broadcasting por coluna

Gráfico mostrando um array de shape (2, 5) somado a um de shape (2, 1)

array = np.arange(10).reshape((2, 5))
array + np.array([0, 1]).reshape((2, 1))
array([[ 0,  1,  2,  3,  4],
       [ 6,  7,  8,  9, 10]])
Introdução ao NumPy

Broadcasting por coluna

 

 

Gráfico mostrando o array de uma coluna esticado por coluna sobre um array com o mesmo shape do maior

Introdução ao NumPy

Outros operadores

Um array de shape (2, 2) sendo multiplicado por um array de shape (2, 1)

Um array de shape (2,) sendo subtraído de um array de shape (2, 2)

Introdução ao NumPy

Vamos praticar!

Introdução ao NumPy

Preparing Video For Download...