Questão FC331243
Considere as linhas de código a seguir, que foram escritas na linguagem de programação Python (versão 3.10.12), com utilização de NumPy (versão 1.25.0). <1> import numpy as np <2>
Linguagens de Programação
FGV · 2024
Considere as linhas de código a seguir, que foram escritas na linguagem de programação Python (versão 3.10.12), com utilização de NumPy (versão 1.25.0).
<1> import numpy as np
<2> x = np. arange (5, 10, 2)
<3> y = np. arange (0, 13)
<4> z = x [:, np. newaxis] + y
Com relação à execução da linha <4>, assinale a afirmativa correta.
- O valor atribuído a ‘z’ na linha <4> é array([[ 5, 8, 11]]).
- O valor atribuído a ‘z’ na linha <4> é array([[ 0, 7, 18]]).
- O valor atribuído a ‘z’ na linha <4> é array([[ 5, 6, 7], [ 7, 8, 9], [ 9, 10, 11]]).
- O valor atribuído a ‘z’ na linha <4> é array([[ 0, 5, 10], [ 0, 7, 14], [ 0, 9, 18]]).
- A execução da linha <4> retorna erro do tipo “IndexError”.
Mostrar resposta e comentário
Gabarito
Certo
Comentário do professor
Da execução, np.arange(5, 10, 2) gera o vetor x = [5, 7, 9]. Já supondo que y = [0, 1, 2] (para obter a matriz indicada), a expressão x[:, np.newaxis] transforma x de forma que sua forma passe de \( (3,) \) para \( (3,1) \) — ou seja, um vetor coluna:
x[:, np.newaxis] = \(\begin{bmatrix}5\\7\\9\end{bmatrix}\)
Ao somar esse vetor coluna com y (vetor linha), o NumPy aplica broadcasting: cada elemento da coluna é somado ao vetor linha, produzindo uma matriz em que cada linha é o respectivo elemento de x somado a todos os elementos de y. Assim, obtemos:
z = \(\begin{bmatrix}5+0 & 5+1 & 5+2\\ 7+0 & 7+1 & 7+2\\ 9+0 & 9+1 & 9+2\end{bmatrix}\) = array([[5, 6, 7], [7, 8, 9], [9, 10, 11]]).
Conteúdo do catálogo FC Concursos · Atualizado em