Olá Nícolas, tudo bem com você?
Peço desculpas pela demora em lhe responder.
Quando estamos trabalhando com o fatiamento em matrizes temos a seguinte sintaxe:
matriz[x:y:k, a:b:k]
Onde:
- x:y:k: Corresponde às linhas da matriz.
- a:b:k: Corresponde às colunas da matriz.
- x ou a : Indica o índice inicial (inclusivo).
- y ou b: Indica o índice final (exclusivo).
- k: Indica o passo, deve ser diferente de 0.
O passo (k) quando não informado será considerado como 1, assim o fatiamento será realizado de item em item (1 a 1), quando informamos um valor para o passo, estamos informando o intervalo que deve acontecer o fatiamento, tomando como exemplo o exercício proposto, temos a seguinte matriz:
| | |
---|
'Roberto' | 'casado | 'masculino' |
'Sheila' | 'solteira' | 'feminino' |
'Bruno' | 'solteiro' | 'masculino' |
'Rita' | 'casada' | 'feminino' |
Representada em python pelo seguinte código.
import numpy as np
dados = np.array(
[
['Roberto', 'casado', 'masculino'],
['Sheila', 'solteira', 'feminino'],
['Bruno', 'solteiro', 'masculino'],
['Rita', 'casada', 'feminino']
]
)
Na atividade é pedido para usarmos o fatiamento de forma que seu resultado apresente o nome e estado civil das pessoas do sexo masculio.
Primeiramente devemos definir em quais linhas estão os dados que procuramos, nesse exemplo vamos procurar da primeira linha (index 0) a última linha, assim a primeira parte do nosso código ficará da seguinte forma:
dados[0::k, a:b:k]
Quando não informamos o valor para o ponto de parada (y) o fatiamento percorre todas as linhas.
Vemos que a definição de sexo muda a cada linha, ou seja, estão com o passo de 2, vamos querer que nosso fatiamento aconteça a cada dois (recebe um dado, pula um e recebe o próximo). Nesse momento temos o nosso valor para o nosso passo (k) das linhas.
dados[0::2, a:b:k]
Nesse momento iniciaremos a análise das colunas que possuem nosso dados, queremos as duas primeiras colunas, indexe 1 e 2 respectivamente, vemos que os dados são em sequência, passo de 1 (k), como aprendemos, se o passo equivale a 1 não será necessário informarmos o valor de k. A segunda parte do nosso código ficará da seguinte forma:
dados[0::2, :2]
Note que informamos apenas o ponto de parada no fatiamento das colunas (:2), quando não informamos o ponto de início o fatiamento será iniciado do index 0.
Resultado do nosso fatiamento
array([['Roberto', 'casado'],
['Bruno', 'solteiro']], dtype='<U9')
Em resumo temos em nosso código, da esquerda para a direita:
dados[0::2, :2]
- 0::2 - Fatiamento das linhas iniciando no index 0 percorrendo dotas as linhas (não informado o final) com o passo de 2
- :2 - Fatiamento das colunas iniciando na coluna 1 (index 0 - por não ter sido informado é considerado 0) e parando na coluna 2 (índex 1 - Nota: o valor final é exclusivo, parando um index anterior ao informado) de passo 1 (não é necessário informar quando o passo for 1).
Sobre o uso do passo em fatiamento, o professor explica na seguinte aula (minuto 4:45 a 7:11):
Em caso de dúvidas, coloco-me à disposição.
Abraços e bons estudos.
Caso este post tenha lhe ajudado, por favor, marcar como solucionado ✓. Bons Estudos!