Notice: This page requires JavaScript to function properly.
Please enable JavaScript in your browser settings or update your browser.
Aprenda Transmissão | Matemática com NumPy
Numpy Definitivo

bookTransmissão

Antes de explorar as operações matemáticas no NumPy, é fundamental compreender um conceito-chave: broadcasting.

Note
Definição

Broadcasting é um método para alinhar as formas dos arrays ao realizar operações aritméticas, sem a necessidade de redimensioná-los manualmente. Em essência, o broadcasting ajusta automaticamente as formas dos arrays.

Quando o NumPy trabalha com dois arrays, ele verifica suas formas para compatibilidade a fim de determinar se podem ser utilizados juntos com broadcasting.

Note
Nota

Se dois arrays já possuem o mesmo formato, o broadcasting não é necessário.

Mesmo Número de Dimensões

Suponha que temos dois arrays para os quais desejamos realizar uma adição, com os seguintes formatos: (2, 3) e (1, 3). O NumPy compara os formatos dos dois arrays começando pela dimensão mais à direita e indo para a esquerda. Ou seja, primeiro compara 3 e 3, depois 2 e 1.

Duas dimensões são consideradas compatíveis se forem iguais ou se uma delas for 1:

  • Para as dimensões 3 e 3, são compatíveis porque são iguais;
  • Para as dimensões 2 e 1, são compatíveis porque uma delas é 1.

Como todas as dimensões são compatíveis, os formatos são considerados compatíveis. Portanto, os arrays podem ser broadcasted, resultando em uma operação padrão de adição entre matrizes do mesmo formato, realizada elemento a elemento.

123456789
import numpy as np array_1 = np.array([[1, 2, 3], [4, 5, 6]]) print(array_1.shape) # Creating a 2D array with 1 row array_2 = np.array([[11, 12, 13]]) print(array_2.shape) # Broadcasting and element-wise addition result = array_1 + array_2 print(result)
copy
Note
Nota

array_2 é criado como um array 2D contendo apenas uma linha, por isso seu formato é (1, 3).

Mas o que aconteceria se o criássemos como um array 1D com formato (3,)?

Número Diferente de Dimensões

Quando um array possui menos dimensões que o outro, as dimensões ausentes são tratadas como tendo tamanho 1. Por exemplo, considere dois arrays com formatos (2, 3) e (3,). Aqui, 3 = 3, e a dimensão à esquerda ausente é considerada como 1, então o formato (3,) torna-se (1, 3). Como os formatos (2, 3) e (1, 3) são compatíveis, esses dois arrays podem ser transmitidos por broadcasting.

123456789
import numpy as np array_1 = np.array([[1, 2, 3], [4, 5, 6]]) print(array_1.shape) # Creating a 1D array array_2 = np.array([11, 12, 13]) print(array_2.shape) # Broadcasting and element-wise addition result = array_1 + array_2 print(result)
copy

Broadcasting de Escalares

Além das operações matemáticas com arrays, também é possível realizar operações semelhantes entre um array e um escalar (número) graças ao broadcasting. Nesse caso, o array pode ter qualquer formato, pois um escalar essencialmente não possui formato, e todas as suas dimensões são consideradas como 1. Portanto, os formatos são sempre compatíveis.

123456
import numpy as np array = np.array([[1, 2, 3], [4, 5, 6]]) print(array.shape) # Broadcasting and element-wise addition result = array + 10 print(result)
copy

Formas Incompatíveis

Vamos também considerar um exemplo de formas incompatíveis, onde uma operação aritmética não pode ser realizada porque o broadcasting não é possível:

Temos um array 2x3 e um array 1D de comprimento 2, ou seja, uma forma (2,). A dimensão ausente é considerada como 1, então as formas tornam-se (2, 3) e (1, 2).

Da esquerda para a direita: 3 != 2, então imediatamente temos dimensões incompatíveis e, portanto, formas incompatíveis. Se tentarmos executar o código, receberemos um erro:

12345678
import numpy as np array_1 = np.array([[1, 2, 3], [4, 5, 6]]) print(array_1.shape) array_2 = np.array([11, 12]) print(array_2.shape) # ValueError result = array_1 + array_2 print(result)
copy
question mark

Selecione todos os arrays com formas compatíveis:

Select the correct answer

Tudo estava claro?

Como podemos melhorá-lo?

Obrigado pelo seu feedback!

Seção 4. Capítulo 1

Pergunte à IA

expand

Pergunte à IA

ChatGPT

Pergunte o que quiser ou experimente uma das perguntas sugeridas para iniciar nosso bate-papo

Suggested prompts:

Can you explain more about how broadcasting works with higher-dimensional arrays?

What kind of error message do you get when shapes are incompatible?

Can you give more real-world examples where broadcasting is useful?

Awesome!

Completion rate improved to 3.7

bookTransmissão

Deslize para mostrar o menu

Antes de explorar as operações matemáticas no NumPy, é fundamental compreender um conceito-chave: broadcasting.

Note
Definição

Broadcasting é um método para alinhar as formas dos arrays ao realizar operações aritméticas, sem a necessidade de redimensioná-los manualmente. Em essência, o broadcasting ajusta automaticamente as formas dos arrays.

Quando o NumPy trabalha com dois arrays, ele verifica suas formas para compatibilidade a fim de determinar se podem ser utilizados juntos com broadcasting.

Note
Nota

Se dois arrays já possuem o mesmo formato, o broadcasting não é necessário.

Mesmo Número de Dimensões

Suponha que temos dois arrays para os quais desejamos realizar uma adição, com os seguintes formatos: (2, 3) e (1, 3). O NumPy compara os formatos dos dois arrays começando pela dimensão mais à direita e indo para a esquerda. Ou seja, primeiro compara 3 e 3, depois 2 e 1.

Duas dimensões são consideradas compatíveis se forem iguais ou se uma delas for 1:

  • Para as dimensões 3 e 3, são compatíveis porque são iguais;
  • Para as dimensões 2 e 1, são compatíveis porque uma delas é 1.

Como todas as dimensões são compatíveis, os formatos são considerados compatíveis. Portanto, os arrays podem ser broadcasted, resultando em uma operação padrão de adição entre matrizes do mesmo formato, realizada elemento a elemento.

123456789
import numpy as np array_1 = np.array([[1, 2, 3], [4, 5, 6]]) print(array_1.shape) # Creating a 2D array with 1 row array_2 = np.array([[11, 12, 13]]) print(array_2.shape) # Broadcasting and element-wise addition result = array_1 + array_2 print(result)
copy
Note
Nota

array_2 é criado como um array 2D contendo apenas uma linha, por isso seu formato é (1, 3).

Mas o que aconteceria se o criássemos como um array 1D com formato (3,)?

Número Diferente de Dimensões

Quando um array possui menos dimensões que o outro, as dimensões ausentes são tratadas como tendo tamanho 1. Por exemplo, considere dois arrays com formatos (2, 3) e (3,). Aqui, 3 = 3, e a dimensão à esquerda ausente é considerada como 1, então o formato (3,) torna-se (1, 3). Como os formatos (2, 3) e (1, 3) são compatíveis, esses dois arrays podem ser transmitidos por broadcasting.

123456789
import numpy as np array_1 = np.array([[1, 2, 3], [4, 5, 6]]) print(array_1.shape) # Creating a 1D array array_2 = np.array([11, 12, 13]) print(array_2.shape) # Broadcasting and element-wise addition result = array_1 + array_2 print(result)
copy

Broadcasting de Escalares

Além das operações matemáticas com arrays, também é possível realizar operações semelhantes entre um array e um escalar (número) graças ao broadcasting. Nesse caso, o array pode ter qualquer formato, pois um escalar essencialmente não possui formato, e todas as suas dimensões são consideradas como 1. Portanto, os formatos são sempre compatíveis.

123456
import numpy as np array = np.array([[1, 2, 3], [4, 5, 6]]) print(array.shape) # Broadcasting and element-wise addition result = array + 10 print(result)
copy

Formas Incompatíveis

Vamos também considerar um exemplo de formas incompatíveis, onde uma operação aritmética não pode ser realizada porque o broadcasting não é possível:

Temos um array 2x3 e um array 1D de comprimento 2, ou seja, uma forma (2,). A dimensão ausente é considerada como 1, então as formas tornam-se (2, 3) e (1, 2).

Da esquerda para a direita: 3 != 2, então imediatamente temos dimensões incompatíveis e, portanto, formas incompatíveis. Se tentarmos executar o código, receberemos um erro:

12345678
import numpy as np array_1 = np.array([[1, 2, 3], [4, 5, 6]]) print(array_1.shape) array_2 = np.array([11, 12]) print(array_2.shape) # ValueError result = array_1 + array_2 print(result)
copy
question mark

Selecione todos os arrays com formas compatíveis:

Select the correct answer

Tudo estava claro?

Como podemos melhorá-lo?

Obrigado pelo seu feedback!

Seção 4. Capítulo 1
some-alt