Questão nº 43
Questão de Tecnologia da Informação · FGV CVM 2024 (nº 43)
Durante a preparação de dados para análise, alterar a quantidade de dimensões e/ou elementos de cada dimensão de um dado do tipo Array é uma operação importante na manipulação de dados. Observe o seguinte trecho de código escrito na linguagem de programação Python:
```python
import numpy as np
arr = np.array([1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12])
newarr = arr.reshape(2, 3, 2)
print(newarr)
```
O resultado da execução do código apresentado é:
- A```
[[ 1 2 3]
[ 4 5 6]
[ 7 8 9]
[10 11 12]]
``` - B```
[[ 1 2 3 4]
[ 5 6 7 8]
[ 9 10 11 12]]
``` - C```
[[[ 1 2]
[ 3 4]
[ 5 6]]
[[ 7 8]
[ 9 10]
[11 12]]]
``` (alternativa correta) - D```
[[ 1 2 3 4 5 6]
[ 7 8 9 10 11 12]]
``` - E```
[[[ 1 2 3]
[ 4 5 6]]
[[ 7 8 9]
[10 11 12]]]
```
Resposta comentada
Gabarito Alternativa C
O método reshape() do NumPy reorganiza os elementos de um array em uma nova forma (número de dimensões e tamanho de cada dimensão), sem alterar os dados ou a ordem original dos elementos. É como pegar uma fila de números e organizá-los em uma nova "caixa" com as dimensões especificadas. O número total de elementos deve ser o mesmo na forma original e na nova forma.
- (A) Incorreta: Esta alternativa representa um array 2D com 4 linhas e 3 colunas (
(4, 3)). A operaçãoreshape(2, 3, 2)cria um array 3D. - (B) Incorreta: Esta alternativa representa um array 2D com 3 linhas e 4 colunas (
(3, 4)). A operaçãoreshape(2, 3, 2)cria um array 3D. - (C) Correta: O
reshape(2, 3, 2)significa que o array terá 2 "blocos" (primeira dimensão), cada bloco terá 3 "linhas" (segunda dimensão), e cada linha terá 2 "colunas" (terceira dimensão). Os elementos são preenchidos sequencialmente do array original:- Primeiro bloco:
- Primeira linha:
[1, 2] - Segunda linha:
[3, 4] - Terceira linha:
[5, 6]
- Primeira linha:
- Segundo bloco:
- Primeira linha:
[7, 8] - Segunda linha:
[9, 10] - Terceira linha:
[11, 12]
Isso resulta na estrutura[[[ 1 2], [ 3 4], [ 5 6]], [[ 7 8], [ 9 10], [11 12]]].
- Primeira linha:
- Primeiro bloco:
- (D) Incorreta: Esta alternativa representa um array 2D com 2 linhas e 6 colunas (
(2, 6)). A operaçãoreshape(2, 3, 2)cria um array 3D. - (E) Incorreta: Esta alternativa representa um array 3D com a forma
(2, 2, 3), ou seja, 2 blocos, cada um com 2 linhas e 3 colunas. A ordem das dimensões é crucial noreshape. A banca tenta confundir a ordem dos últimos dois parâmetros (3, 2vs2, 3). Se a operação fossearr.reshape(2, 2, 3), o resultado seria este.
Fonte: FGV CVM 2024 Analista CVM - Ciência de Dados (Perfil 7) (Caderno Tipo 1). Reproduzida para fins de estudo.