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']
Você está vendo a versão anterior da nova experiência da Alura que estamos preparando para você. Em breve, ela ganha uma identidade visual novinha totalmente pensada em potencializar seus estudos!
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']
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.shapeResultado:
(4, 3)Já no caso que funciona, temos primeiro um slice:
resultado_primeiro_slice = dados[:, 0:2]
resultado_primeiro_sliceCom 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.