Na aula tínhamos a variável 'dados', cujo valor era a seguinte array:
dados = array([[44410., 5712., 37123., 0., 25757.],
[ 2003., 1991., 1990., 2019., 2006.]])
Ensinando fatiamento, o professor executou o seguinte código:
km_media = dados[:, 1:3][0] / (2019 - dados[:, 1:3][1])
Visando obter como retorno:
array([ 204. , 1280.10344828])
A minha dúvida está na leitura do fatiamento. Pelo que foi dito em aula, quando vai selecionar um elemento dentro de uma array, primeiro vem a linha e depois a coluna, podendo ser [linha, coluna] ou [linha][coluna]. Sendo assim, pelo meu entendimento das aulas, a forma de ler o comando feito pelo professor seria:
"Da variável dados, extrair [todas as linhas, colunas índices 1 e 2 (pois o 3 não é incluído)]" - Igualmente na segunda parte da divisão.
Não consigo entender a lógica dos posicionamentos [0] e [1] que vem em seguida. Consigo visualizar que ele utilizou isso para chamar as linhas 0 e 1, mas isso rompe a lógica de primeiro a linha e depois a coluna.
Executei o código km_media = dados[0][1:3] / (2019 - dados[1][1:3])
e o resultado foi o mesmo.
1 - Considerando que supostamente a ordem de declaração é primeiro a linha e depois a coluna, por que nesse caso veio primeiro a coluna e depois a linha? Essa ordem não é obrigatória? Como o sistema entende essa variação?
2 - Segundo o que foi dito em aula, dados[:, 1:3]
significa "pegar de todas as linhas (os dois pontos antes da vírgula), das colunas 1 e 2". Esse mesmo código foi o utilizado na situação problema mencionada, adicionando o "[0]" depois para designar a linha. Não consigo entender, pois teoricamente a linha já foi especificada no primeiro colchete através dos dois pontos, ainda que o resultado seria errado se ela fosse considerada.
Espero ter-me feito compreensível, agradeço muito qualquer esclarecimento!