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']
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.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.