FC ConcursosFC Concursos

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.

  1. O valor atribuído a ‘z’ na linha <4> é array([[ 5, 8, 11]]).
  2. O valor atribuído a ‘z’ na linha <4> é array([[ 0, 7, 18]]).
  3. O valor atribuído a ‘z’ na linha <4> é array([[ 5, 6, 7], [ 7, 8, 9], [ 9, 10, 11]]).
  4. O valor atribuído a ‘z’ na linha <4> é array([[ 0, 5, 10], [ 0, 7, 14], [ 0, 9, 18]]).
  5. 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

Continue aprendendo