
À l’aide de la fonction NumPy np.delete(), vous pouvez supprimer n’importe quelle ligne et colonne du tableau NumPy ndarray.
Spécifiez l’axe (dimension) et la position (numéro de ligne, numéro de colonne, etc.). Il est également possible de sélectionner plusieurs lignes et colonnes à l’aide d’une tranche ou d’une liste.
Cet article décrit le contenu suivant.
- Utilisation de base de np.delete()
- Spécifiez l’index (numéro de ligne/colonne) :
obj
- Spécifiez l’axe (dimension):
axis
- Spécifiez l’index (numéro de ligne/colonne) :
- Supprimer plusieurs lignes et colonnes à la fois
- Utiliser une liste
- Utiliser une tranche
- Supprimer des lignes et des colonnes
- Exemple de tableaux multidimensionnels
Consultez les articles suivants pour savoir comment supprimer des éléments, des lignes et des colonnes en fonction de conditions au lieu de spécifier la position par index et comment supprimer des lignes et des colonnes contenant la valeur manquante NaN.
Utilisez reshape() pour changer la forme.
Utilisation de base de np.delete()
np.delete() prend trois paramètres comme suit.
- numpy.delete(arr, obj, axe=Aucun)
- arr : tableau d’entrée
- obj : numéro de ligne ou de colonne à supprimer
- axe : Axe à supprimer
Par exemple, pour supprimer la deuxième ligne, définissez obj=1, axe=0. Les détails seront décrits plus tard. Le ndarray d’origine n’est pas modifié et une nouvelle copie de ndarray est renvoyée.
import numpy as np
a = np.arange(12).reshape(3, 4)
print(a)
# [[ 0 1 2 3]
# [ 4 5 6 7]
# [ 8 9 10 11]]
a_del = np.delete(a, 1, 0)
print(a_del)
# [[ 0 1 2 3]
# [ 8 9 10 11]]
print(a)
# [[ 0 1 2 3]
# [ 4 5 6 7]
# [ 8 9 10 11]]
Spécifiez l’index (numéro de ligne/colonne) :obj
Spécifiez l’index (numéro de ligne/colonne) à supprimer dans le deuxième paramètre obj. L’index commence à 0.
La spécification d’un index inexistant génère une erreur.
print(np.delete(a, 0, 0))
# [[ 4 5 6 7]
# [ 8 9 10 11]]
print(np.delete(a, 2, 0))
# [[0 1 2 3]
# [4 5 6 7]]
# print(np.delete(a, 3, 0))
# IndexError: index 3 is out of bounds for axis 0 with size 3
Spécifiez l’axe (dimension):axis
Spécifiez l’axe (cote) à supprimer dans le troisième axe de paramètre. Le numéro d’axe commence à 0.
Dans le cas d’un tableau à deux dimensions, la ligne est la première dimension (axe = 0) et la colonne est la deuxième dimension (axe = 1).
La spécification d’une dimension inexistante génère une erreur.
print(np.delete(a, 1, 0))
# [[ 0 1 2 3]
# [ 8 9 10 11]]
print(np.delete(a, 1, 1))
# [[ 0 2 3]
# [ 4 6 7]
# [ 8 10 11]]
# print(np.delete(a, 1, 2))
# AxisError: axis 2 is out of bounds for array of dimension 2
Avec axis=None, l’élément à l’index spécifié par obj est supprimé après l’aplatissement à une dimension. La valeur par défaut pour l’axe est Aucun.
print(np.delete(a, 1, None))
# [ 0 2 3 4 5 6 7 8 9 10 11]
print(np.delete(a, 1))
# [ 0 2 3 4 5 6 7 8 9 10 11]
Supprimer plusieurs lignes et colonnes à la fois
Plusieurs lignes et colonnes peuvent être supprimées à la fois en spécifiant une liste ou une tranche dans le deuxième paramètre obj.
Utiliser une liste
Spécifiez les numéros de ligne et les numéros de colonne à supprimer dans une liste ou un tableau.
print(np.delete(a, [0, 3], 1))
# [[ 1 2]
# [ 5 6]
# [ 9 10]]
print(np.delete(a, [0, 1, 3], 1))
# [[ 2]
# [ 6]
# [10]]
Utiliser une tranche
Il est également possible de spécifier plusieurs lignes et colonnes en utilisant une tranche spécifiant une plage avec [start:stop:step].
Pour plus d’informations sur les bases du slicing et des objets slice avec slice(), consultez l’article suivant :
tranche()
Créez un objet slice avec slice() et spécifiez-le comme second paramètre obj.
Il est équivalent à [:stop] s’il n’y a qu’un seul argument, [start:stop] s’il y en a deux et [start:stop:step] s’il y en a trois. Si vous souhaitez omettre, spécifiez explicitement None.
print(np.delete(a, slice(2), 1))
# [[ 2 3]
# [ 6 7]
# [10 11]]
print(np.delete(a, slice(1, 3), 1))
# [[ 0 3]
# [ 4 7]
# [ 8 11]]
print(np.delete(a, slice(None, None, 2), 1))
# [[ 1 3]
# [ 5 7]
# [ 9 11]]
np.s_[]
Utilisez numpy.s_[] si vous voulez écrire sous la forme [start:stop:step].
print(np.delete(a, np.s_[:2], 1))
# [[ 2 3]
# [ 6 7]
# [10 11]]
print(np.delete(a, np.s_[1:3], 1))
# [[ 0 3]
# [ 4 7]
# [ 8 11]]
print(np.delete(a, np.s_[::2], 1))
# [[ 1 3]
# [ 5 7]
# [ 9 11]]
Supprimer des lignes et des colonnes
Vous ne pouvez pas supprimer plusieurs dimensions (telles que des lignes et des colonnes) à la fois avec np.delete(). Si vous souhaitez supprimer différentes dimensions, répétez np.delete().
print(np.delete(np.delete(a, 1, 0), 1, 1))
# [[ 0 2 3]
# [ 8 10 11]]
Exemple de tableaux multidimensionnels
Jusqu’à présent, pour des raisons de commodité, il a été décrit en termes de ligne et de colonne, mais le concept est le même dans le cas de trois dimensions ou plus.
a_3d = np.arange(24).reshape(2, 3, 4)
print(a_3d)
# [[[ 0 1 2 3]
# [ 4 5 6 7]
# [ 8 9 10 11]]
#
# [[12 13 14 15]
# [16 17 18 19]
# [20 21 22 23]]]
print(a_3d.shape)
# (2, 3, 4)
Spécifiez les dimensions dans l’axe et l’index dans l’obj.
print(np.delete(a_3d, 1, 0))
# [[[ 0 1 2 3]
# [ 4 5 6 7]
# [ 8 9 10 11]]]
print(np.delete(a_3d, 1, 1))
# [[[ 0 1 2 3]
# [ 8 9 10 11]]
#
# [[12 13 14 15]
# [20 21 22 23]]]
print(np.delete(a_3d, 1, 2))
# [[[ 0 2 3]
# [ 4 6 7]
# [ 8 10 11]]
#
# [[12 14 15]
# [16 18 19]
# [20 22 23]]]
Plusieurs spécifications par liste ou tranche peuvent être écrites de la même manière.
print(np.delete(a_3d, [0, 3], 2))
# [[[ 1 2]
# [ 5 6]
# [ 9 10]]
#
# [[13 14]
# [17 18]
# [21 22]]]
print(np.delete(a_3d, np.s_[::2], 2))
# [[[ 1 3]
# [ 5 7]
# [ 9 11]]
#
# [[13 15]
# [17 19]
# [21 23]]]