Piecewise

Mabrouk

Piecewise

Message par Mabrouk » 11 nov. 2016 09:29

Salut, j'ai un problème dans la fonction piecewise, je n'ai pas compris pourquoi elle retourne 0 ( à part la première condition) dés que le nombre de condition dépasse 3.
Merci d'avance pour votre aide.
Cordialement.

Messages : 0

Inscription : 11 déc. 2015 08:24

Profil de l'utilisateur : Élève de lycée

Re: Piecewise

Message par left_shift » 11 nov. 2016 11:31

Il faudrait que tu donnes un exemple qui ne s'exécute pas comme tu le souhaiterais…

Mabrouk

Re: Piecewise

Message par Mabrouk » 11 nov. 2016 19:20

def f(x):

a=numpy.piecewise(x,[(x<=0),(x>0)*(x<=5),(x>=5)],[1,3,4])

return(int(a))

Je ne comprend pas pourquoi je trouve f=0 pour x>0, la fonction a été bien définie dans la première condition mais pour les 2 dernières elle m'envoie 0.

Messages : 0

Inscription : 11 déc. 2015 08:24

Profil de l'utilisateur : Élève de lycée

Re: Piecewise

Message par left_shift » 11 nov. 2016 22:45

La fonction piecewise exige un tableau en argument (et renvoie un tableau).

Pour obtenir un comportement conforme à ce que tu souhaites, il faudrait écrire quelque chose comme :

def f(x):
....x = numpy.array([x])
....a = numpy.piecewise(x, [x <= 0, x > 0 and x <= 5, x >= 5], [1, 3, 4])
....return a[0]

Personnellement, je préfère une succession de if / elif / else. La fonction piecewise me parait surtout intéressante lorsque x est un ensemble de valeurs.

Mabrouk

Re: Piecewise

Message par Mabrouk » 12 nov. 2016 08:42

ah c'est claire maintenant, merci !!

Répondre