Vectorisation d'une fonction (Python)

Je suis nouveau sur python et en essayant de faire une tache HW et il ne cesse de jeter cette erreur de retour chez moi (dans iPython Notebook):

"TypeError: unsupported operand type(s) for ** or pow(): 'list' and 'float'"

Voici la formule que je suis en train de l'imiter: h(x)=(1/√2π)*e^−(1/2)^x^2

import numpy as np
import math
from math import *


def h_scalar(x):
    return (1 / sqrt(2 * pi)) * exp(-.50** x ** 2.00)

Que j'essaie de faire la même sortie que mon professeur.

l = [-10.0, -1.0, 0.0, 1.0, 10.0] #
print h_scalar(l)
>>> [1.4867195147342977e-06, 0.24197072451914337, 0.3989422804014327,
0.24197072451914337, 1.4867195147342977e-06]

Voici les enseignants à la question btw:

Tout d'abord, écrire une fonction nommée h_scalar. La fonction doit s'attendre à une liste (ou en général un élément qui est itératif). Il s'attend à ce que la liste contient les valeurs à virgule flottante. Elle doit retourner une nouvelle liste de flotteurs qui sont les h(x) pour chaque valeur de x dans la liste d'entrée. Vous devez appeler votre fonction h_scalar()

1.) Votre exponentielle doit être -.50 * x ** 2.00. 2.) Vous ne pouvez pas diffuser une opération comme **2.00 à travers un standard de python tableau. Pour ce faire, convertir x à un np.array. 3.) Si vous ne souhaitez pas utiliser numpy, pensez à utiliser un for boucle pour calculer la formule pour chaque élément dans x. Stocker ces valeurs dans un autre tableau, ce qui permet ensuite de retour. Sinon, utilisez une compréhension de liste.

OriginalL'auteur user2839099 | 2013-10-02