NumPy - Indexation et découpage

Le contenu de l'objet ndarray peut être consulté et modifié par indexation ou découpage, tout comme les objets conteneurs intégrés de Python.

Comme mentionné précédemment, les éléments de l'objet ndarray suivent un index de base zéro. Trois types de méthodes d'indexation sont disponibles -field access, basic slicing et advanced indexing.

Le découpage de base est une extension du concept de base de Python de découpage en n dimensions. Un objet de tranche Python est construit en donnantstart, stop, et step paramètres au intégré slicefonction. Cet objet slice est passé au tableau pour extraire une partie du tableau.

Exemple 1

import numpy as np 
a = np.arange(10) 
s = slice(2,7,2) 
print a[s]

Sa sortie est la suivante -

[2  4  6]

Dans l'exemple ci-dessus, un ndarray l'objet est préparé par arange()fonction. Ensuite, un objet de tranche est défini avec les valeurs de démarrage, d'arrêt et de pas respectivement 2, 7 et 2. Lorsque cet objet slice est transmis au ndarray, une partie de celui-ci commençant par l'index 2 jusqu'à 7 avec un pas de 2 est découpée.

Le même résultat peut également être obtenu en donnant les paramètres de découpage séparés par deux points: (start: stop: step) directement au ndarray objet.

Exemple 2

import numpy as np 
a = np.arange(10) 
b = a[2:7:2] 
print b

Ici, nous obtiendrons le même résultat -

[2  4  6]

Si un seul paramètre est mis, un seul élément correspondant à l'index sera renvoyé. Si un: est inséré devant lui, tous les éléments de cet index seront extraits. Si deux paramètres (avec: entre eux) sont utilisés, les éléments entre les deux index (sans compter l'index d'arrêt) avec la première étape par défaut sont découpés.

Exemple 3

# slice single item 
import numpy as np 

a = np.arange(10) 
b = a[5] 
print b

Sa sortie est la suivante -

5

Exemple 4

# slice items starting from index 
import numpy as np 
a = np.arange(10) 
print a[2:]

Maintenant, la sortie serait -

[2  3  4  5  6  7  8  9]

Exemple 5

# slice items between indexes 
import numpy as np 
a = np.arange(10) 
print a[2:5]

Ici, la sortie serait -

[2  3  4]

La description ci-dessus s'applique aux ndarray aussi.

Exemple 6

import numpy as np 
a = np.array([[1,2,3],[3,4,5],[4,5,6]]) 
print a  

# slice items starting from index
print 'Now we will slice the array from the index a[1:]' 
print a[1:]

La sortie est la suivante -

[[1 2 3]
 [3 4 5]
 [4 5 6]]

Now we will slice the array from the index a[1:]
[[3 4 5]
 [4 5 6]]

Le découpage peut également inclure des points de suspension (…) pour créer un tuple de sélection de la même longueur que la dimension d'un tableau. Si des points de suspension sont utilisés à la position de ligne, il renverra un ndarray comprenant des éléments en lignes.

Exemple 7

# array to begin with 
import numpy as np 
a = np.array([[1,2,3],[3,4,5],[4,5,6]]) 

print 'Our array is:' 
print a 
print '\n'  

# this returns array of items in the second column 
print 'The items in the second column are:'  
print a[...,1] 
print '\n'  

# Now we will slice all items from the second row 
print 'The items in the second row are:' 
print a[1,...] 
print '\n'  

# Now we will slice all items from column 1 onwards 
print 'The items column 1 onwards are:' 
print a[...,1:]

La sortie de ce programme est la suivante -

Our array is:
[[1 2 3]
 [3 4 5]
 [4 5 6]] 
 
The items in the second column are: 
[2 4 5] 

The items in the second row are:
[3 4 5]

The items column 1 onwards are:
[[2 3]
 [4 5]
 [5 6]]