Tutoriais

Como Fazer Slicing em Matrizes com Numpy

Ana Maria Gomes 29 jun Intermediário 5xp
Compartilhar

Se você já está familiarizado com a linguagem Python e deseja aprofundar seus conhecimentos em manipulação de dados, entender como fazer slicing em matrizes no Python é essencial. Neste tutorial, vamos explorar como realizar slicing em matrizes utilizando a biblioteca Numpy, uma das mais poderosas ferramentas para computação científica em Python.

O que é Slicing?

Slicing, ou fatiamento, é uma técnica que permite acessar partes específicas de uma sequência de dados, como listas, strings ou matrizes. No contexto de Numpy, slicing é utilizado para extrair submatrizes de arrays multidimensionais. Essa técnica é extremamente útil para manipulação e análise de dados, permitindo operações eficientes e precisas.

Por que Usar Numpy para Slicing?

Numpy é uma biblioteca fundamental para computação científica em Python. Ela oferece suporte para arrays multidimensionais e uma vasta gama de funções matemáticas. Comparado a listas nativas do Python, Numpy é mais eficiente em termos de memória e desempenho, especialmente para operações em larga escala.

Vantagens do Numpy:

  • Desempenho: Operações vetorizadas são muito mais rápidas.
  • Memória: Arrays Numpy ocupam menos espaço.
  • Funcionalidade: Suporte para operações matemáticas avançadas.

Como Fazer Slicing em Matrizes no Python com Numpy

Vamos começar com alguns exemplos básicos de slicing em matrizes utilizando Numpy.

Criando uma Matriz com Numpy

Primeiro, vamos criar uma matriz simples para trabalhar:

import numpy as np

# Criando uma matriz 3x3
matriz = np.array([[1, 2, 3], [4, 5, 6], [7, 8, 9]])
print(matriz)
Testar

Acessando Elementos Específicos

Para acessar um elemento específico, utilizamos a notação [linha, coluna]:

import numpy as np

matriz = np.array([[1, 2, 3], [4, 5, 6], [7, 8, 9]])

# Acessando o elemento na primeira linha e segunda coluna
elemento = matriz[0, 1]
print(elemento)  # Output: 2
Testar

Slicing Básico

Podemos utilizar slicing para acessar submatrizes. A notação básica é [inicio:fim], onde inicio é o índice inicial e fim é o índice final (não incluído).

import numpy as np

matriz = np.array([[1, 2, 3], [4, 5, 6], [7, 8, 9]])

# Acessando a primeira linha inteira
primeira_linha = matriz[0, :]
print(primeira_linha)  # Output: [1 2 3]

# Acessando a primeira coluna inteira
primeira_coluna = matriz[:, 0]
print(primeira_coluna)  # Output: [1 4 7]

# Acessando um subarray (primeiras duas linhas e duas primeiras colunas)
subarray = matriz[:2, :2]
print(subarray)  # Output: [[1 2]
                 #          [4 5]]
Testar

Slicing com Passo

Além dos índices de início e fim, podemos especificar um passo para o slicing. A notação é [inicio:fim:passo].

import numpy as np

matriz = np.array([[1, 2, 3], [4, 5, 6], [7, 8, 9]])

# Acessando elementos com passo
passo = matriz[::2, ::2]
print(passo)  # Output: [[1 3]
              #          [7 9]]
Testar

Slicing em Matrizes Multidimensionais

Numpy permite trabalhar com arrays de múltiplas dimensões. Vamos criar uma matriz 3D e realizar slicing nela.

import numpy as np

# Criando uma matriz 3D
matriz_3d = np.array([[[1, 2, 3], [4, 5, 6]], 
                      [[7, 8, 9], [10, 11, 12]], 
                      [[13, 14, 15], [16, 17, 18]]])

# Acessando o primeiro "plano" da matriz 3D
primeiro_plano = matriz_3d[0, :, :]
print(primeiro_plano)  # Output: [[1 2 3]
                       #          [4 5 6]]

# Acessando o segundo elemento do segundo "plano"
elemento = matriz_3d[1, 1, 1]
print(elemento)  # Output: 11
Testar

Slicing com Indexação Avançada

Numpy também suporta indexação avançada, permitindo acessar elementos específicos com listas de índices.

import numpy as np

# Criando uma matriz 2D
matriz = np.arange(1, 31).reshape(6, 5)

# Acessando elementos específicos com listas de índices
indices = [0, 2, 4]
submatriz = matriz[indices, :]
print(submatriz)  # Output: [[ 1  2  3  4  5]
                  #          [11 12 13 14 15]
                  #          [21 22 23 24 25]]
Testar

Desafios Práticos

Para consolidar o aprendizado, aqui estão alguns desafios práticos:

  1. Faça um slice que retorne a última linha da matriz (utilize índices negativos): ultima_linha = matriz[-1, :] print(ultima_linha)
  2. Faça um slice na matriz que retorne uma submatriz utilizando os números 19, 20, 24, 25: submatriz = matriz[3:5, 3:5] print(submatriz)
  3. Retorne a média dos valores das últimas 3 linhas: media = matriz[-3:, :].mean() print(media)
  4. Retorne a diagonal que vai do número 2 até o número 20: diagonal = matriz[[0, 1, 2, 3], [1, 2, 3, 4]] print(diagonal)
  5. Queremos o retorno sendo uma matriz do tipo:
    python submatriz = matriz[[0, 4, 5], 3:] print(submatriz)

Conclusão

Neste tutorial, exploramos como fazer slicing em matrizes no Python utilizando a biblioteca Numpy. Vimos desde operações básicas até técnicas mais avançadas, como indexação com listas e slicing em matrizes multidimensionais. Com essas ferramentas, você estará bem equipado para manipular e analisar dados de forma eficiente em Python.

Se você deseja se aprofundar ainda mais, recomendamos explorar a documentação oficial do Numpy e praticar com diferentes tipos de dados e operações. Boa sorte e boas análises de dados!

Cursos gratuitos para continuar aprendendo

Curso
Grátis · 2h 13min

Python para iniciantes: do zero ao primeiro projeto

Aprenda sobre variáveis, loops e funções e crie seu primeiro projeto Python em apenas 2 horas!

Curso
Grátis · 3h 47min

Python para dados: do zero à análise completa

Saia do zero e analise dados com Python e Pandas neste curso gratuito com certificado!

Curso
Grátis · 4h 11min

Python para IA: do zero ao primeiro chatbot

Aprenda a programar com Python e explore a inteligência artificial! Crie um chatbot prático que interage com seus próprios dados. Comece agora!

Ver todos os cursos

0 comentários

Exclusivo PRO
Faça parte da discussão

Comente e participe da conversa

Crie sua conta gratuita e compartilhe sua opinião nos comentários.

Entre para a Asimov