Je voudrais attribuer une fonction qui comporte une évaluation booléenne, en utilisant une méthode rapide. Voici un exemple simple. Je veux que la fonction suivante à évaluer pour arbitraire a
et b
:Attribution de fonction vectorielle vectorisée avec une instruction booléenne
a = 0.5
b = 0.6
def func(x):
x=max(x,a)
if x>b:
return x**2
else:
return x**3
et je veux affecter les valeurs de la fonction dans un tableau d'une manière vectorisée (pour la vitesse):
xRange = np.arange(0, 1, 0.1)
arr_func = func(xRange)
Mais J'obtiens l'erreur:
ValueError: The truth value of an array with more than one element is ambiguous. Use a.any() or a.all()
Maintenant, je sais que je peux assigner les valeurs dans une boucle. Mais ce sera lent par rapport à l'équivalent vectorisé. Puis-je contourner cette exception et toujours attribuer les valeurs de manière vectorisée?
Je pense que vous pouvez utiliser https://docs.scipy.org/doc/numpy-1.10.0/reference/generated/numpy.vectorize.html – Lukisn
N'utilisez pas 'np.vectorize' ici! –