Solucionado (ver solução)
Solucionado
(ver solução)
1
resposta

Entendendo a linha de código.

Na aula seleções com arrays o professor ensina o fatiamento como i: j: k onde i é o indice inicial, j indice de parada e o k seria o passo.


dados = np.array(
    [
        ['Roberto', 'casado', 'masculino'],
        ['Sheila', 'solteiro', 'feminino'],
        ['Bruno', 'solteiro', 'masculino'],
        ['Rita', 'casado', 'feminino']
    ]
)

[0::2, :2]->> essa é a resposta correta do exercício

0 seria o i, portanto o índice inicial é ['Roberto', 'casado', 'masculino'], como temos um ':' o índice final(j) é ['Rita', 'casado', 'feminino'] depois temos um ':2' que eu realmente não entendo o que é, não seria mais fácil dizer [::2] onde ja é informado que é do inicio ao fim passo 2?

1 resposta
solução!

Bom dia Felipe, tudo bem com você?

Muito bem, o que você trouxe sobre os índices do fatiamento está perfeito, mas antes de responder a sua pergunta vamos entender um pouco mais sobre as possibilidades de fatiamento. Como você falou a resposta é [0::2,:2], neste caso, qual a função da vírgula no seletor?

Isso mesmo, a vírgula é um separador, mas o que a vírgula está separando? Antes da vírgula está o que queremos selecionar em relação às linhas, depois da vírgula está o que queremos selecionar em relação às colunas. Por tanto, a vírgula está separando o seletor de linhas e o seletor de colunas:

abre chaves na cor preta, em seguida 0::2 na cor roxa na sequência vírgula na cor preta depois :2 na cor amarela e por último fecha chaves na cor preta. Marcador informando que o que vem antes da vírgula é o seletor de linha e o que vem depois da vírgula é o seletor de colunas

Utilizando os índices do fatiamento que você trouxe teremos:

abre chaves na cor preta, em seguida i:j:k na cor roxa na sequência vírgula na cor preta depois i:j:k na cor amarela e por último fecha chaves na cor preta. Marcador informando que o que vem antes da vírgula é o seletor de linha e o que vem depois da vírgula é o seletor de colunas

Tudo bem, mas o que acontece se o seletor não tiver vírgula, por exemplo [0::2]? O que você acha que será selecionado? Neste caso, o seletor considera que o que for informado será em relação às linhas e em relação às colunas, o seletor trará os valores de todas as colunas existentes.

Sabendo disso, vamos analisar primeiro o seletor de linhas, ou seja, o que vem antes da vírgula. O i é ponto de partida das linhas e foi definido como zero. O j estabelece o ponto de parada, como não foi informado nenhum valor, o seletor irá até o índice da última linha. Por fim, o k representa o passo, forma como queremos caminhar e foi definido como 2. Resumindo, queremos pegar da linha de índice zero até o índice da última linha, andando de dois em dois. Como inicialmente estamos pensando apenas no seletor de linhas, ele será [0::2]. Quais linhas iremos pegar com este seletor?Serão as linhas:

['Roberto', 'casado', 'masculino'],
['Bruno', 'solteiro', 'masculino']

Agora vamos analisar o seletor de colunas. Diferente do seletor de linhas, o seletor de colunas anda de mãos dadas com o seletor de linhas, então precisaremos informar os dois. Para as linhas vamos utilizar o seletor estudado acima, mas dessa vez daremos atenção ao que vier depois da vírgula. No caso do seletor [0::2,:2], o i não foi informado, então ele parte da primeira coluna. O j é o ponto de parada que foi informado como 2. Por fim, não foi informado nenhum valor para o k, nesse caso ele andará de um em um. Quais colunas iremos pegar com este seletor? Serão as colunas de nome e estado civil das linhas acima, que são os valores:

['Roberto', 'casado'],
['Bruno', 'solteiro']

Legal, viramos especialistas nesse tipo de seletor, assim podemos responder a sua pergunta. O enunciado diz que precisamos selecionar as colunas de nome e estado civil para as pessoas do sexo masculino. O que será selecionado com o seletor [::2]? Serão selecionadas todas as colunas da primeira até a última linha andando de dois em dois.

['Roberto', 'casado', 'masculino'],
['Bruno', 'solteiro', 'masculino']

Acontece que foi especificado que devem aparecer apenas as colunas de nome e estado civil, por isso, precisamos informar um seletor para as colunas também. As colunas que queremos são as duas primeiras que possuem os índices 0 e 1. O seletor de colunas será :2, juntando com o seletor de linhas teremos o seletor que vimos acima [0::2,:2]. Qual seria uma outra forma de escrever esse mesmo seletor? Uma outra forma seria o [0:4:2,0:2:1] que traria exatamente as mesmas informações:

['Roberto', 'casado'],
['Bruno', 'solteiro']

Espero ter ajudado.

Abraço e bons estudos!

Caso este post tenha lhe ajudado, por favor, marcar como solucionado ✓.Bons Estudos!

Quer mergulhar em tecnologia e aprendizagem?

Receba a newsletter que o nosso CEO escreve pessoalmente, com insights do mercado de trabalho, ciência e desenvolvimento de software