【发布时间】:2021-03-23 22:37:42
【问题描述】:
考虑以下代码:
def disFunc(x,n):
y = np.power(x, n-1)*np.exp(-x)
return y
def disFunc2(t,n,beta):
y = integrate.quad(disFunc, a = 0, b = beta*t, args = (n))
return y[0]
def disFunc3(func):
y = np.vectorize(func)
return(y)
maxCounter = 6000
stepSize = .001
n = 5
beta = 25
t = np.cumsum(np.ones(maxCounter)*stepSize)-stepSize
x = disFunc3(disFunc2)
start_time = time.time()
y = x(t,n,beta)
time_taken = (time.time() - start_time)
print (time_taken)
就像一个魅力,但它太慢了(1.85s)。如何加快速度?
【问题讨论】:
-
不要使用
np.vectorize。它并不比列表理解快。至于quad本身,除了确保disFunc快速之外,您无能为力。我不认为quad有转向参数,但我可能错了。
标签: python performance scipy numerical-integration