HOWTO · NumPy

NumPy Remplacer les valeurs

Il existe trois méthodes principales qui peuvent être utilisées pour remplacer des valeurs dans un tableau NumPy en Python, la fonction numpy.clip(), la fonction numpy.minimum() et la méthode d'indexation.

Sur cette page

Pour remplacer des valeurs dans un tableau NumPy, utilisez numpy.clip() ou combinez numpy.minimum() et numpy.maximum() afin de borner les valeurs entre deux limites. Pour appliquer une condition, par exemple « remplacer chaque valeur supérieure à 5 », utilisez l’indexation booléenne et l’affectation. Les deux premières méthodes créent un tableau résultat sans modifier le tableau d’entrée ; l’affectation par indexation met à jour le tableau d’origine.

Remplacer des valeurs avec la fonction numpy.clip() de NumPy

Utilisez numpy.clip() lorsque chaque valeur doit rester comprise entre une limite inférieure et une limite supérieure. Les valeurs inférieures à la limite basse sont ramenées à celle-ci, et les valeurs supérieures à la limite haute sont ramenées à cette dernière. Sans argument out, la fonction renvoie un tableau résultat écrêté et laisse le tableau d’entrée inchangé. Exécutez cet exemple :

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, 5, 6, 7, 8, 8, 9, 9])

result = np.clip(array, 0, 5)
print(result)

Résultat :

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

Ici, 0 est la limite inférieure et 5 la limite supérieure. Les valeurs déjà comprises entre ces limites restent inchangées, tandis que les valeurs supérieures sont plafonnées à 5. En affectant la valeur renvoyée à result, vous conservez le tableau d’origine array pour vos calculs ultérieurs.

Remplacer des valeurs avec les fonctions numpy.minimum() et numpy.maximum() de NumPy

Vous pouvez appliquer les mêmes deux limites avec numpy.minimum() et numpy.maximum(). D’abord, numpy.minimum() applique le plafond supérieur en choisissant la plus petite valeur entre chaque élément du tableau et 5. Ensuite, numpy.maximum() applique le plancher inférieur en choisissant la plus grande valeur entre chaque résultat intermédiaire et 0. Les deux opérations renvoient des tableaux : cette séquence laisse donc également array inchangé.

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, 5, 6, 7, 8, 8, 9, 9])

result1 = np.minimum(array, 5)

result2 = np.maximum(result1, 0)
print(result2)

Résultat :

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

L’ordre est important lorsqu’on applique les deux limites : commencez par plafonner les valeurs élevées, puis relevez celles qui sont sous le plancher. Remplacez 5 et 0 par les limites supérieure et inférieure souhaitées. Si vous n’avez besoin que d’une seule limite, utilisez la fonction correspondante seule : numpy.minimum() pour un plafond supérieur ou numpy.maximum() pour un plancher inférieur.

Remplacer des valeurs par indexation de tableau en Python

Pour remplacer des valeurs selon une condition, sélectionnez les éléments correspondants à l’aide d’un masque booléen, puis affectez la valeur de remplacement à cette sélection. Cette méthode est utile lorsque la règle ne se résume pas à deux limites, par exemple pour modifier les valeurs qui dépassent un seuil. L’affectation agit sur le tableau d’origine : faites-en une copie au préalable si vous devez le conserver.

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, 5, 6, 7, 8, 8, 9, 9])

array[array > 5] = 5
print(array)

Résultat :

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

L’expression array > 5 crée un masque booléen qui est vrai pour chaque valeur supérieure à 5. L’indexation avec ce masque sélectionne ces éléments, puis l’affectation de 5 les remplace directement dans le tableau. Pour remplacer les valeurs inférieures à un seuil, remplacez la comparaison par <. Pour cibler une plage ou une autre condition, combinez des comparaisons booléennes avec & ou | et placez chaque comparaison entre parenthèses.