Slicing dell'array NumPy


Matrici per affettare

Affettare in Python significa prendere elementi da un dato indice a un altro dato indice.

Passiamo slice invece di index in questo modo: .[start:end]

Possiamo anche definire il passo, in questo modo: .[start:end:step]

Se non passiamo inizia è considerato 0

Se non passiamo, finisce la sua lunghezza considerata dell'array in quella dimensione

Se non superiamo il passaggio è considerato 1

Esempio

Taglia gli elementi dall'indice 1 all'indice 5 dalla seguente matrice:

import numpy as np

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

print(arr[1:5])

Nota: il risultato include l'indice iniziale, ma esclude l'indice finale.

Esempio

Taglia gli elementi dall'indice 4 alla fine dell'array:

import numpy as np

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

print(arr[4:])

Esempio

Taglia gli elementi dall'inizio all'indice 4 (non incluso):

import numpy as np

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

print(arr[:4])


Affettatura negativa

Utilizzare l'operatore meno per fare riferimento a un indice dalla fine:

Esempio

Taglia dall'indice 3 dalla fine all'indice 1 dalla fine:

import numpy as np

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

print(arr[-3:-1])

FARE UN PASSO

Utilizzare il stepvalore per determinare la fase dell'affettatura:

Esempio

Restituisce ogni altro elemento dall'indice 1 all'indice 5:

import numpy as np

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

print(arr[1:5:2])

Esempio

Restituisce ogni altro elemento dall'intero array:

import numpy as np

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

print(arr[::2])

Affettare array 2-D

Esempio

Dal secondo elemento, affetta gli elementi dall'indice 1 all'indice 4 (non incluso):

import numpy as np

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

print(arr[1, 1:4])

Nota: ricorda che il secondo elemento ha l'indice 1.

Esempio

Da entrambi gli elementi, restituisce l'indice 2:

import numpy as np

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

print(arr[0:2, 2])

Esempio

Da entrambi gli elementi, affetta l'indice 1 nell'indice 4 (non incluso), questo restituirà un array 2-D:

import numpy as np

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

print(arr[0:2, 1:4])

Mettiti alla prova con gli esercizi

Esercizio:

Inserire la sintassi di slicing corretta per stampare la seguente selezione dell'array:

Tutto da (compreso) il secondo articolo a (escluso) il quinto articolo.

arr = np.array([10, 15, 20, 25, 30, 35, 40])

print(arr)