У меня есть функция, которая вызывается много раз в других функциях. Чтобы улучшить вычисления, я пытаюсь векторизовать код, хотя мне не удалось этого сделать в данном конкретном случае, когда задействованы сложные диапазоны. Кто-нибудь из вас видит, как это можно сделать в этом конкретном c случае?
def growdh_no_bloom(mx, mn, daylen, baset):
if mn == 0:
mn = 0.01
if mx == mn:
mx += 0.01
dt = mx - mn
idl = int(np.floor(daylen))
# calculate day time hourly temperatures
t = np.zeros(24)
t[0] = mn
for hour in range(1, idl+1):
t[hour] = dt * np.sin(np.pi/(daylen+4)*(hour)) + mn
# calculate sunset time and temperature
ts1 = dt*np.sin(np.pi/(daylen+4)*daylen) + mn
if ts1 <= 0:
ts1 = 0.01
# calculate hourly temperatures (nighttime)
count = 0
for hour in range(idl + 1, 24):
count += 1
t[hour] = ts1-(ts1-mn)/(np.log(24-daylen))*np.log(count)
# growing degree hours
gdhour = 0
for hour in range(0, 24):
if t[hour] - baset > 0:
gdhour += (t[hour] - baset)
return gdhour
Заранее спасибо!