Cython을 사용하여 코드의 속도를 높이려고합니다. Cython에서 람다 함수를 사용할 때 "식별자 또는 리터럴이 필요합니다"라는 오류가 발생합니다. 내가 알 수있는 한, 람다 함수는 Cython 0.13에서 지원 될 예정입니다. 이 시점에서 잘못 되었습니까? 그들이 실제로 지원된다면, 내가 여기 구현 한 것 이외의 것을해야합니까? 당신이 다른 곳 inf
을 정의하지 않는 제 생각에는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]
정확히 어떤 줄로 오류가 발생합니까? – Gabe
나는 당신이 '나는 = lambda e1, e2 : f (e1, e2, rho)'라고 생각한다고 생각한다. – razpeitia
미안. h_z의 정의가 오류를 그립니다. –