Questão nº 51
Questão de Tecnologia da Informação · CESGRANRIO BB 01/2022 (nº 51)
A seguir, é apresentado um fragmento de código em Python.
```python
import numpy as np
b = np.array([[1,2,3,5]])
c = b.transpose()
print(b.dot(c),sum(b),sum(c))
```
O fragmento de código acima provoca a seguinte saída:
- A`39 [11] [11]`
- B`39 [1 2 3 5] 11`
- C`[39] [1 2 3 5] 11`
- D`[[39]] [11] [11]`
- E`[[39]] [1 2 3 5] [11]` (alternativa correta)
Resposta comentada
Gabarito Alternativa E
Conceito-chave: b é um array 2D de formato (1,4) (1 linha, 4 colunas). transpose() inverte as dimensões, então c tem formato (4,1). dot faz multiplicação de matrizes: (1,4) @ (4,1) resulta em (1,1), ou seja, um array 2D com um único elemento. sum(b) soma todos os elementos do array 2D, retornando um escalar (número inteiro), e sum(c) soma os 4 elementos da coluna, também retornando um escalar.
- (A) Incorreta:
b.dot(c)é[[39]](array 2D), não39(escalar); esum(b)esum(c)são escalares11e11, não listas[11]. - (B) Incorreta:
b.dot(c)é[[39]], não39; esum(c)é11(escalar), não[1 2 3 5]. - (C) Incorreta:
b.dot(c)é[[39]], não[39](array 1D); esum(c)é11, não[1 2 3 5]. - (D) Incorreta:
sum(b)esum(c)são escalares11, não listas[11]; a pegadinha é achar quesumem array 2D retorna lista, mas ele soma todos os elementos e devolve um número. - (E) Correta:
b.dot(c)multiplica(1,4)por(4,1)→(1,1)=[[39]];sum(b)soma 1+2+3+5 =11(escalar);sum(c)soma a coluna[1,2,3,5]=11(escalar). A armadilha da banca é confundirsumde array NumPy comsumde lista Python: aqui,sumsempre reduz a um escalar, edotpreserva as dimensões 2D.
Fonte: CESGRANRIO BB 01/2022 Escriturário - Agente de Tecnologia (Caderno Gabarito 1). Reproduzida para fins de estudo.