HOWTO · NumPy

Supprimer la ligne dans NumPy

La fonction numpy.delete() peut être utilisée pour supprimer une ligne d'un tableau NumPy multidimensionnel en Python.

Sur cette page

Les tableaux NumPy ne proposent pas d’opération qui supprime une ligne en modifiant leur taille sur place. Pour créer un tableau sans certaines lignes, utilisez numpy.delete() avec l’axe des lignes, ou un masque booléen pour conserver les lignes qui satisfont une condition. Les indices d’un tableau commencent à 0 : l’indice 1 désigne donc la deuxième ligne.

Supprimer une ligne par son indice avec numpy.delete()

Transmettez le tableau, l’indice de la ligne et axis=0 à numpy.delete(). L’axe 0 sélectionne les lignes ; dans un tableau à deux dimensions, l’axe 1 sélectionnerait les colonnes. Cet exemple supprime la deuxième ligne :

Le code et les libellés ou sorties affichés dans cette section restent en anglais.

import numpy as np

array = np.array([[1, 2, 3],
                  [4, 5, 6],
                  [7, 8, 9]])
without_second = np.delete(array, 1, axis=0)
print(without_second)

Le tableau renvoyé contient les première et troisième lignes. numpy.delete() crée un nouveau tableau et laisse array inchangé. Réutilisez la valeur renvoyée dans les calculs suivants ; en l’affectant à une nouvelle variable, comme ci-dessus, vous conservez le tableau d’origine.

Supprimer plusieurs lignes par leur indice

Pour supprimer plusieurs lignes connues en un seul appel, transmettez leurs indices sous forme de séquence. Les indices se rapportent toujours au tableau d’origine : supprimer l’indice 1 ne modifie donc pas la signification de l’indice 3 au cours du même appel. Ici, les deuxième et quatrième lignes sont sélectionnées pour être supprimées :

Le code et les libellés ou sorties affichés dans cette section restent en anglais.

import numpy as np

array = np.array([[1, 2, 3],
                  [4, 5, 6],
                  [7, 8, 9],
                  [10, 11, 12]])
without_selected = np.delete(array, [1, 3], axis=0)
print(without_selected)

Les lignes restantes sont celles du tableau d’origine aux indices 0 et 2. Si les lignes à supprimer sont déterminées par leurs valeurs, un masque booléen est souvent plus clair que de commencer par rassembler leurs indices.

Supprimer les lignes qui satisfont une condition

Un masque booléen permet de sélectionner les lignes à conserver. Dans un tableau à deux dimensions, array[:, 0] sélectionne la première colonne ; la comparaison avec 5 produit une valeur booléenne par ligne. L’exemple suivant conserve les lignes dont la valeur de la première colonne est supérieure à 5 :

Le code et les libellés ou sorties affichés dans cette section restent en anglais.

import numpy as np

array = np.array([[1, 2, 3],
                  [4, 5, 6],
                  [7, 8, 9],
                  [10, 11, 12]])
keep = array[:, 0] > 5
filtered = array[keep]
print(filtered)

Il s’agit d’un filtrage qui conserve les lignes correspondantes, plutôt que de supprimer des lignes avec numpy.delete(). Pour supprimer les lignes qui satisfont une condition, inversez le masque avec ~, par exemple avec array[~keep]. Choisissez la comparaison en fonction de la colonne et de la règle qui s’appliquent à vos données.

Comprendre les axes, les indices et le tableau renvoyé

Dans un tableau à deux dimensions, axis=0 désigne les lignes et axis=1 les colonnes. Avec numpy.delete(array, index, axis=0), index est une position commençant à zéro sur l’axe des lignes : 0 désigne la première ligne, 1 la deuxième, et ainsi de suite. Si vous omettez axis, le tableau est aplati avant la suppression ; une ligne entière n’est donc pas supprimée d’un tableau à deux dimensions.

L’opération renvoie un nouveau tableau au lieu de redimensionner celui d’origine. Conservez le résultat en l’affectant à une variable, ou utilisez-le directement dans une expression ultérieure. Un indice situé hors de l’axe sélectionné est invalide ; NumPy signale alors une IndexError. Si vous ne savez pas quelles lignes la condition sélectionne, examinez le masque booléen ou affichez les lignes sélectionnées avant d’utiliser le résultat dans un calcul plus important.