A respeito da biblioteca Numpy, julgue o item a seguir. impo...

Próximas questões
Com base no mesmo assunto
Q2276929 Programação
A respeito da biblioteca Numpy, julgue o item a seguir.

import numpy as np a = np.array([(1, 2), (3, 4), (5, 6)], dtype=[('x', 'i4'), ('y', 'i4')]) print(a) print(a.shape)

O resultado da execução do código Python apresentado anteriormente é o que se segue.
[[1 2] [3 4] [5 6] ['x','i4'] ['y','i4']] (3, 2)

Alternativas

Gabarito comentado

Confira o gabarito comentado por um dos nossos professores

Gabarito: E - Errado

Vamos analisar o código apresentado e entender por que a alternativa correta é "Errado". O código está utilizando a biblioteca Numpy, que é uma biblioteca muito poderosa para a manipulação de arrays e matrizes em Python, fornecendo uma grande quantidade de funções matemáticas úteis para operações com esses arrays.

No código, é criado um array estruturado com o uso de dtype, especificando que o array terá duas colunas nomeadas 'x' e 'y', ambas contendo elementos do tipo inteiro de 4 bytes ('i4'). O array é inicializado com três linhas de pares de números. Ao imprimir o array a, o resultado esperado é mostrar esses pares no formato de um array estruturado, e não uma lista contendo os elementos e os tipos de dados como mostrado na questão.

Além disso, ao imprimir a.shape, o resultado esperado é a tupla (3,), indicando que o array possui 3 elementos no nível mais alto, pois cada elemento do array estruturado é composto por um conjunto de pares ('x', 'y'). Portanto, a saída do código apresentado seria algo parecido com o seguinte:

[(1, 2) (3, 4) (5, 6)]
(3,)

Porém, a saída fornecida na questão mostra uma matriz 3x2 seguida pela representação dos tipos de dados, o que está incorreto. Este resultado seria esperado se o array fosse um array simples (non-structured) em Numpy, e não um array estruturado como foi definido pelo dtype com nomes de campos.

Portanto, o gabarito "E - Errado" é o correto, pois a saída mostrada no enunciado não condiz com o comportamento esperado do código apresentado, quando utilizando a biblioteca Numpy.

Clique para visualizar este gabarito

Visualize o gabarito desta questão clicando no botão abaixo

Comentários

Veja os comentários dos nossos alunos

[(1, 2) (3, 4) (5, 6)]

(3,)

O código cria uma matriz NumPy com um tipo de dado estruturado, onde cada elemento é uma tupla com campos 'x' e 'y', ambos representando inteiros de 32 bits. A matriz contém três dessas tuplas e a forma da matriz é (3,).

Essa questão foi retirada da documentação de Numpy, fonte primária das questões da Cespe sobre este assunto: https://numpy.org/doc/stable/reference/generated/numpy.shape.html

Explicação passo a passo deste código:

A primeira coisa que você precisa entender é que inicialmente estamos criando uma matriz multidimensional a usando np.array:

a = np.array([(1, 2), (3, 4), (5, 6)])

O resultado dessa execução será a seguinte:

[[(1, 2),  <- Linha 1

 (3, 4),  <- Linha 2

 (5, 6)]] <- Linha 3

Ao inserir o comando dtype=[('x', 'i4'), ('y', 'i4')]) , estamos simplesmente definindo dois campos para cada linha, onde 'i4' representa um inteiro de 32 bits e 'x' e 'y' são os nomes dos campos dentro do tipo de dados estruturado.

Podemos visualizar essa operação da seguinte forma:

Linha 1:

'x': 1

'y': 2

Linha 2:

'x': 3

'y': 4

Linha 3:

'x': 5

'y': 6

Executando, então, o trecho a = np.array([(1, 2), (3, 4), (5, 6)], dtype=[('x', 'i4'), ('y', 'i4')]) e imprimindo (print(a)) teremos a saída:

[(1, 2), (3, 4), (5, 6)]

Observação: Apesar de parecer uma única linha, na verdade são três tuplas dentro da matriz, como originalmente definido. O que acontece é que o NumPy tem uma representação visual compacta para matrizes pequenas, exibindo os elementos entre parênteses e separados por espaços, sem quebra de linha entre eles.

A segunda parte da resolução dessa questão envolve o conceito de shape: esse comando imprime a forma da matriz a, ou seja, a quantidade de linhas e colunas que ela possui.

No caso da questão apresentada, print(a.shape) terá saída (3,), indicando que a matriz a tem 3 elementos ao longo da primeira dimensão (linhas) e nenhum elemento ao longo da segunda dimensão (colunas).

Isso ocorre porque a é uma matriz unidimensional de tamanho 3.

O dtype especificado na criação da matriz não afeta o formato da matriz, apenas a forma como os elementos são interpretados.

______________________________________________________ //

Resposta Final:

O resultado da execução do código será:

[(1, 2) (3, 4) (5, 6)]

(3,)

Gabarito: Errado

Se te ajudou, dê um like :)

Clique para visualizar este comentário

Visualize os comentários desta questão clicando no botão abaixo