Tecnologista Pleno I - Desenvolvimento de Software e Sistemas para Área de Geoinformática
Considere o trecho de código dado abaixo escrito na linguagem de programação Python, com uso da biblioteca para computação científica NumPy.>>> import numpy as np>>> x = np.array([('Morango', 25, 18.3), ('Abacate', 37, 2.5)], dtype=[('nome', 'U10'), ('codigo', 'i4'), ('valor', 'f4')])Com relação ao trecho acima, analise os itens a seguir:I. O comando abaixo retorna o valor ('Morango', 25, 18.3). >>> x[0]II. O comando abaixo retorna o valor 2.5. >>> x[x['codigo']>30]['valor']III. O comando abaixo altera o campo “nome” do último elemento do array. >>> x['nome'][:]='Laranja'Está correto o que se afirma em:
AI, apenas.
BII, apenas.
CI e II, apenas.
DI e III, apenas.
EI, II e III.
Revelar gabarito e comentário▾
GabaritoA — I, apenas.
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”.
Análise de array NumPy com dtype estruturado
Gabarito: A (apenas o item I). O item I está correto: x[0] acessa a primeira linha do array, retornando uma tupla nomeada. O item II está incorreto, pois a expressão x[x['codigo']>30]['valor'] retorna um array NumPy (um array de um elemento) e não o valor escalar 2.5. O item III está incorreto, pois x['nome'][:]='Laranja' altera o campo 'nome' de todos os elementos, não apenas do último.
A questão explora o uso de arrays estruturados do NumPy, que permitem misturar tipos de dados em uma mesma estrutura. É essencial compreender como a indexação booleana e o acesso a campos funcionam.
Item
Afirmação
Correto?
Motivo
I
x[0] retorna ('Morango', 25, 18.3)
✅ Sim
Acessa o primeiro elemento do array estruturado, retornando a tupla nomeada.
II
x[x['codigo']>30]['valor'] retorna 2.5
❌ Não
Retorna um array NumPy de shape (1,) com o valor 2.5, não um escalar.
III
x['nome'][:]='Laranja' altera o campo 'nome' do último elemento
❌ Não
Altera o campo 'nome' de todos os elementos (uso de [:]).
Array estruturado NumPy: Acesso a elemento (x[0] → tupla nomeada); Indexação booleana + campo (Retorna array, não escalar); Atribuição com slice [:] (Altera todos os elementos)
Item I — ✅ Correto
x[0] retorna o primeiro elemento do array, que é uma tupla nomeada com os valores ('Morango', 25, 18.3). Isso é o comportamento esperado para arrays estruturados.
Item II — ❌ Incorreto
x[x['codigo']>30]['valor'] realiza:
x['codigo']>30 → array booleano [False, True].
x[ [False, True] ] → array contendo apenas o segundo elemento (('Abacate', 37, 2.5)).
['valor'] → extrai o campo 'valor' desse sub-array, resultando em um array NumPy de shape (1,) com o valor 2.5 (dtype float32).
A afirmação diz que retorna o valor 2.5, mas na verdade retorna um array contendo 2.5. A banca costuma considerar isso um erro, pois o retorno não é um escalar Python.
NÃO CAIA NESSA!
A banca testa se você confunde o resultado de uma indexação booleana com acesso a campo. O retorno é um array (ainda que com um único elemento), e não o valor numérico puro. Lembre-se: em NumPy, muitas operações preservam a estrutura de array.
Item III — ❌ Incorreto
x['nome'][:]='Laranja' atribui a string 'Laranja' a todas as posições do campo 'nome' (o slice [:] seleciona todo o eixo). Portanto, tanto o primeiro quanto o segundo elemento terão seus nomes alterados. A afirmação diz "altera o campo nome do último elemento", o que é falso.
Conclusão: Apenas o item I está correto, portanto a alternativa A é o gabarito.