Fatiamento no ndarray bidimensional

Um recurso importante do numpy é o fatiamento no qual é possível acessar partes do array de diversas formas, como pode ser visto abaixo:

Inicializando um array e mudando o seu shape


In [5]:
%matplotlib inline
import numpy as np
from PIL import Image

In [6]:
a = np.arange(20) # a é um vetor unidimensional de 20 elementos
print(a)


[ 0  1  2  3  4  5  6  7  8  9 10 11 12 13 14 15 16 17 18 19]

In [7]:
a = a.reshape(4,5) # a agora é um array 4x5 (4 linhas por 5 colunas)
print('a.reshape(4,5) = \n', a)


a.reshape(4,5) = 
 [[ 0  1  2  3  4]
 [ 5  6  7  8  9]
 [10 11 12 13 14]
 [15 16 17 18 19]]

Fatiamento de linhas e colunas de um array

O operador : indica que todos os elementos naquela dimensão devem ser acessados.


In [2]:
print('A segunda linha do array: \n', a[1,:])  # A segunda linha é o índice 1

print(' A primeira coluna do array: \n', a[:,0]) # A primeira coluna corresponde ao índice 0


A segunda linha do array: 
 [5 6 7 8 9]
 A primeira coluna do array: 
 [ 0  5 10 15]

Fatiamento de elementos específicos de um array


In [8]:
print('Acessando as linhas do array de 2 em 2 começando pelo índice 0: \n', 
      a[0::2,:])

print(' Acessando as linhas e colunas do array de 2 em 2 começando pela linha 0 e coluna 1: \n', 
      a[0::2,1::2])


Acessando as linhas do array de 2 em 2 começando pelo índice 0: 
 [[ 0  1  2  3  4]
 [10 11 12 13 14]]
 Acessando as linhas e colunas do array de 2 em 2 começando pela linha 0 e coluna 1: 
 [[ 1  3]
 [11 13]]

Fatiamento com índices invertidos


In [9]:
print("Acesso as duas últimas linhas do array em ordem reversa:\n", 
      a[-1:-3:-1,:])
print("Acesso elemento na última linha e coluna do array:\n", 
      a[-1,-1])
print("Invertendo a ordem das linhas do array:\n", 
      a[::-1,:])


Acesso as duas últimas linhas do array em ordem reversa:
 [[15 16 17 18 19]
 [10 11 12 13 14]]
Acesso elemento na última linha e coluna do array:
 19
Invertendo a ordem das linhas do array:
 [[15 16 17 18 19]
 [10 11 12 13 14]
 [ 5  6  7  8  9]
 [ 0  1  2  3  4]]