Introdução
Neste laboratório, abordaremos os conceitos de Indexação (Indexing) e Fatiamento (Slicing) na biblioteca NumPy do Python. Aprenderemos como acessar, modificar e extrair uma faixa de elementos de um array. Diferentes métodos de Indexação na biblioteca NumPy também serão explicados e demonstrados usando exemplos.
Dicas para a VM
Após a inicialização da VM, clique no canto superior esquerdo para mudar para a aba Notebook e acessar o Jupyter Notebook para praticar.
Às vezes, pode ser necessário aguardar alguns segundos para que o Jupyter Notebook termine de carregar. A validação das operações não pode ser automatizada devido a limitações no Jupyter Notebook.
Se você enfrentar problemas durante o aprendizado, sinta-se à vontade para perguntar ao Labby. Forneça feedback após a sessão, e resolveremos o problema prontamente para você.
Entendendo os Fundamentos
- Em um array NumPy, o fatiamento (slicing) é basicamente a maneira de extrair uma faixa de elementos de um array.
- Os itens no objeto ndarray sempre seguem a indexação baseada em zero.
- Para acessar e modificar o conteúdo do objeto ndarray na biblioteca NumPy, a indexação (indexing) ou o fatiamento (slicing) podem ser realizados da mesma forma que no objeto container embutido do Python.
Fatiamento de Arrays NumPy
- O fatiamento (slicing) em um array é realizado da mesma forma que em uma lista Python.
- Se um array tiver 100 elementos e você quiser selecionar apenas uma seção dos valores, você pode realizar o fatiamento (slicing) e extrair o conjunto de valores desejado do ndarray completo.
- Aprenda sobre o fatiamento (slicing) de listas Python e você poderá aplicar o mesmo em ndarrays NumPy.
Indexação de Arrays NumPy
- Existem três tipos de métodos de indexação (indexing) disponíveis na biblioteca NumPy:
- Acesso ao campo (Field access) - Este é o acesso direto ao campo usando o índice do valor.
- Fatiamento Básico (Basic Slicing) - O fatiamento básico (basic slicing) é simplesmente uma extensão do conceito básico de fatiamento (slicing) do Python para n-dimensões.
- Indexação Avançada (Advanced Indexing) (não coberto neste laboratório)
Exemplos
- Vamos analisar alguns exemplos para obter uma melhor compreensão desses conceitos.
Exemplo 1 - Fatiamento de Ndarray
import numpy as np
a = np.arange(10)
print("O ndarray é:")
print(a)
s = slice(2,7,2)
print("Após aplicar a função slice():")
print (a[s])
- O código acima prepara um objeto ndarray usando a função arange().
- Um objeto slice é definido com os valores de início (start), parada (stop) e passo (step) 2, 7 e 2, respectivamente.
- Depois disso, este objeto slice é passado para o ndarray. Uma parte dele que começa com o índice 2 até 7 com um valor de passo de 2 será fatiada.
Exemplo 2 - Fatiando um Único Item
import numpy as np
a = np.arange(15)
print("O array é:")
print(a)
## using the index directly
b = a[7]
print("O oitavo item no array é:")
print (b)
- O código acima fatia um único item do objeto ndarray.
- Fatiar um único array pode ser alcançado muito facilmente usando indexação.
Exemplo 3
import numpy as np
a = np.arange(20)
print("O array é:")
print(a)
print("Fatiamento de itens começando do índice:")
print(a[2:])
- O código acima fatia os itens começando de um índice dado até o último índice ou o último elemento.
Exemplo 4
import numpy as np
a = np.arange(20)
print("O array é:")
print(a)
print("Fatiamento de itens entre dois índices dados:")
print(a[2:8])
- O código acima fatia todos os itens entre dois índices dados.
- Ele exclui o valor no índice final.
Usando Elipse
- Ao fatiar, ellipsis (...) é usado para criar uma tupla de seleção do mesmo comprimento que a dimensão de um array.
- Para um ndarray multidimensional, se a ellipsis for usada na posição da linha, ela retornará um ndarray composto por itens nas linhas e, similarmente, para as colunas.
import numpy as np
a = np.array([[11,2,23],[33,44,5],[84,25,16]])
print ("The array is :")
print (a )
print ('\n')
#To return array of items in the second column
print ('The items in the second column are:')
print (a[..., 1] )
print ('\n')
## In order to slice all items from the second row
print ('The items in the second row are:')
print (a[1, ...])
print ('\n')
## In order to slice all items from column 1 onwards
print ('The items onwards to column 1 are:' )
print (a[..., 1:])
Resumo
Neste laboratório, cobrimos o conceito de Indexação (Indexing) e Fatiamento (Slicing) na biblioteca Numpy. Aprendemos diferentes métodos de indexação na biblioteca Numpy e vários métodos de fatiamento de arrays. Também vimos exemplos demonstrando a implementação prática desses conceitos.



