1
resposta

Alternativa de solução

Eu sanei algumas dúvidas lendo o tópico aqui, mas não entendei um ponto

Porque esse funciona:

dados[:, 0:2][dados[:, -1] == 'masculino']

E esse não funciona:

dados[:, 0:2, dados[:, -1] == 'masculino']
1 resposta

Olá Edu.

Na documentação podemos ver como funciona o slice.

dados[x, y, z]

As virgulas determinam a dimensão que estamos fazendo o slice, então quando fazemos esse slice:

dados[:, 0:2, dados[:, -1] == 'masculino']

Estamos fazendo o slice em uma dimensão invalida, já que o shape de dados só tem duas dimensões.

dados.shape

Resultado:

(4, 3)

Já no caso que funciona, temos primeiro um slice:

resultado_primeiro_slice = dados[:, 0:2]
resultado_primeiro_slice

Com resultado:

array([['Roberto', 'casado'],
       ['Sheila', 'solteiro'],
       ['Bruno', 'solteiro'],
       ['Rita', 'casado']], dtype='<U9')

E agora com esse novo array resultante, temos um novo slice:

resultado_primeiro_slice[dados[:, -1] == 'masculino']

Com o resultado que desejamos:

array([['Roberto', 'casado'],
       ['Bruno', 'solteiro']], dtype='<U9')

Então resumindo, no primeiro estamos fazendo um slice em um array e depois no array resultante enquanto no segundo estamos tentando fazer um slice de 3 dimensões em um array que tem apenas duas.

Espero ter esclarecido sua duvidas, mas qualquer coisa não hesite em perguntar.

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