108 votes

Remplacer les valeurs négatives dans un tableau numpy

Existe-t-il un moyen simple de remplacer toutes les valeurs négatives d'un tableau par 0 ?

J'ai un bloc complet sur la façon de le faire en utilisant un tableau NumPy.

Par exemple :

a = array([1, 2, 3, -4, 5])

J'ai besoin de revenir

[1, 2, 3, 0, 5]

a < 0 donne :

[False, False, False, True, False]

C'est là que je suis coincé - comment utiliser ce tableau pour modifier le tableau d'origine.

161voto

NPE Points 169956

Tu es à mi-chemin. Essayez :

In [4]: a[a < 0] = 0

In [5]: a
Out[5]: array([1, 2, 3, 0, 5])

10voto

Levon Points 34085

Une autre solution Python minimaliste sans utiliser numpy :

[0 if i < 0 else i for i in a]

Pas besoin de définir des fonctions supplémentaires.

a = [1, 2, 3, -4, -5.23, 6]
[0 if i < 0 else i for i in a]

rendements :

[1, 2, 3, 0, 0, 6]

4voto

Ramon Crehuet Points 1175

Et encore une autre possibilité :

In [2]: a = array([1, 2, 3, -4, 5])

In [3]: where(a<0, 0, a)
Out[3]: array([1, 2, 3, 0, 5])

2voto

Kekoa Points 11545

Voici un moyen de le faire en Python sans NumPy. Créez une fonction qui renvoie ce que vous voulez et utilisez une compréhension de liste, ou la fonction de mappage.

>>> a = [1, 2, 3, -4, 5]

>>> def zero_if_negative(x):
...   if x < 0:
...     return 0
...   return x
...

>>> [zero_if_negative(x) for x in a]
[1, 2, 3, 0, 5]

>>> map(zero_if_negative, a)
[1, 2, 3, 0, 5]

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X