Indexing e slicing in un array con Numpy
Le operazioni di indexing e slicing mi pemettono di selezionare o estrarre solo una parte degli elementi di un array creato con Numpy.
- a[n] seleziona l'elemento nell'array a alla posizione n. Negli array creati con Numpy/Python il primo elemento si trova in posione zero a[0].
- a[-n] seleziona l'ennesimo elemento dalla fine dell'array. L'ultimo elemento dell'array ha indice -1, il penultimo -2, e via dicendo.
- a[n,m] seleziona gli elementi dell'array a partire dall'elemeno in posizione n fino a quello in posizione m (escluso) ossia fino al m-1 esimo elemento.
- a[:] seleziona tutti gli elementi dell'array
- a[n:] seleziona gli elemento dell'array a partire dalla posizione n fino alla fine dell'array.
- a[n:m:p] seleziona gli elementi dell'array dall'elemento n-esimo fino all'elemento m-esimo escluso con passo p.
Esempio pratico
Creo un array unidimensionale (vettore)
>>> v=np.array([1,2,3,4,5,6,7,8,9])
Estraggo il primo elemento dell'array
>>> v[0]
1
Estraggo l'ultimo elemento dell'array
>>> v[-1]
9
Estraggo il terzo elemento dell'array
>>> v[2]
3
Estraggo un subarray dal secondo al penultimo elemento dell'array
>>> v[1:-1]
array([2, 3, 4, 5, 6, 7, 8])
Estraggo un subarray dal secondo al penultimo elemento dell'array con passo +2
>>> v[1:-1:2]
array([2, 4, 6, 8])
Estraggo i primi tre elementi dell'array
>>> v[:3]
array([1, 2, 3])
Estraggo gli ultimi tre elementi dell'array
>>> v[-3:]
array([7, 8, 9])
Inverto l'ordine degli elementi nell'array
>>> v[::-1]
array([9, 8, 7, 6, 5, 4, 3, 2, 1])
Inverto l'ordine degli elementi nell'array usando un passo -2
>>> v[::-2]
array([9, 7, 5, 3, 1])
E così via.