1
resposta

Não entendi como usar o fatiamento

dados[x:y, a:b, ?:?] o xy correspondem à linha, a:b à coluna mas no terceiro não entendi como que usa em casos de matriz. No vídeo ele usou um exemplo simples com dados no qual utilizava um exemplo correspondente a dados[0:1, 1:3], porém ao chegar no exercício me deparei com uma terceira informação, os passos, mas não consegui utilizá-la.

o que significa [0::2, :2]?

Insira aqui a descrição dessa imagem para ajudar na acessibilidade

1 resposta

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!