J'essaie d'utiliser Cython pour accélérer un morceau de code. Cython donne une erreur qui lit "Expected an identifier ou literal" quand j'utilise les fonctions lambda. Autant que je sache, les fonctions lambda sont censées être supportées par Cython 0.13. Suis-je incorrect sur ce point? S'ils sont, en effet, soutenus, dois-je faire autre chose que ce que j'ai ici pour les mettre en œuvre?Erreur lors de l'utilisation de la fonction lambda avec Cython
def f(e_1, e_2, rho):
"""Bivariate Normal pdf with mean zero, unit variances, and correlation coefficient rho."""
return (1.0/(2.0 * pi * sqrt(1 - rho**2))) * exp(-(1.0/(2*(1 - rho**2))) * (e_1**2 + e_2**2 - 2*rho*e_1*e_2))
def P_zero(b_10, b_11, b_20, b_21, rho, gamma, x):
"""Returns the probability of observing zero entrants in a market by numerically
integrating out the unobserved firm-specific profit shocks."""
h_z = lambda e_1: -inf
g_z = lambda e_1: -b_10 - b_11*x[0] - gamma*x[1]
I = lambda e_1, e_2: f(e_1, e_2, rho)
return dblquad(I, -inf, (-b_20 - b_21*x[0] - gamma*x[2]), h_z, g_z)[0]
Exactement quelle ligne vous donne l'erreur? – Gabe
Je pense que vous voulez dire 'I = lambda e1, e2: f (e1, e2, rho)' – razpeitia
Droit, désolé. La définition de h_z dessine l'erreur. –