Pular para o conteúdo principal

Questão de Programação — Linguagens de programação — FGV 2024

ProgramaçãoLinguagens de programação
Código
fg084793
Banca
FGV
Órgão
EPE
Ano
2024
Nível
Superior
Cargo
Analista de Pesquisa Energética (Economia de Energia)
Considere o código a seguir, escrito na linguagem de programação Python (versão 3.11.3).<1> import numpy as np<2> x = np.arange(1,30,2).reshape(3,5)<3> y = x[[1,2]]<4> y[0,:]=0<5> z = x[0,2]Assinale a opção que indica o valor que z recebe na linha <5>.
  1. A0
  2. B5
  3. Carray([[ 0, 0, 0, 0, 0]])
  4. Darray([[11, 13, 15], [21, 23, 25]])
  5. Earray([[ 1, 3, 5 ], [11, 13, 15]])
Revelar gabarito e comentário

GabaritoB — 5

Comentário gerado por IA. É um apoio ao estudo, ancorado em fontes, mas pode conter imprecisões — confira sempre na fonte oficial (lei, súmula, edital e gabarito da banca). Encontrou um erro? Use “Reportar”.

NumPy: indexação fancy e views

Gabarito: letra B. O código cria um array de 1 a 29 com passo 2 e o remodela para 3x5. A linha y = x[[1,2]] cria uma visão das linhas 1 e 2. Ao zerar a primeira linha de y, a linha correspondente em x (linha 1) é zerada. O acesso x[0,2] retorna o valor original da linha 0, coluna 2, que é 5.

Passo a passo:

  1. np.arange(1,30,2)[1,3,5,7,9,11,13,15,17,19,21,23,25,27,29]

  2. .reshape(3,5) → matriz 3×5:

    ```

    [[ 1, 3, 5, 7, 9],

    [11, 13, 15, 17, 19],

    [21, 23, 25, 27, 29]]

    ```

  3. y = x[[1,2]] → visão das linhas 1 e 2:

    ```

    [[11, 13, 15, 17, 19],

    [21, 23, 25, 27, 29]]

    ```

  4. y[0,:]=0 → modifica a primeira linha de y (linha 1 de x). Agora x fica:

    ```

    [[ 1, 3, 5, 7, 9],

    [ 0, 0, 0, 0, 0],

    [21, 23, 25, 27, 29]]

    ```

  5. z = x[0,2] → elemento da linha 0, coluna 2: 5.

  1. 1arange(1,30,2)
  2. 2reshape(3,5)
  3. 3y = x[[1,2]] (visão)
  4. 4y[0,:]=0 (altera x)
  5. 5z = x[0,2] → 5
LEVEL · soulevel.com.br

Alternativa A — ❌ Incorreta

O valor 0 seria obtido se acessasse x[1,2] ou x[0,0], mas x[0,2] é 5.

Alternativa B — ✅ Correta ⟵ GABARITO

Conforme demonstrado, x[0,2] é 5.

Alternativa C — ❌ Incorreta

y[0,:] após modificação é [0,0,0,0,0], mas z é um escalar, não um array.

Alternativa D — ❌ Incorreta

Corresponde a uma fatia de x (linhas 0 e 1, colunas 2 a 4), não ao elemento x[0,2].

Alternativa E — ❌ Incorreta

Corresponde à submatriz x[:2, :3] do array original, mas z é um único valor.

PEGA ESSA DICA!

Lembre-se de que indexação fancy (usando uma lista de índices) no NumPy retorna uma visão do array original. Qualquer alteração na visão afeta o array original. Para evitar efeitos colaterais, use .copy() se necessário.

Gabarito: letra B.

Link permanente: /questoes/fg084793