Мне нужно создать последовательность чисел a_t
в соответствии со старой последовательностью чисел z_t
и a_0
. a_t
определяется как 27 if t=0
или a(t-1)exp(z(t-1)) for t>=1
.
При использовании генератора этот код просто
import math
def a_t(zs, a=27):
z = next(zs)
yield a
for z in zs:
a *= math.exp(z)
yield a
Кажется возможным работать только с a_0
и суммой по z_t-1, z_t-2, ..., z0
вместо ожидания a_t-1
для вычисления a_t
. Таким образом, можно векторизовать вычисления, а не вычислять a_i
один за другим. Можно ли кодировать следующую последовательность с numpy
с целью векторизации, то есть a_t = a_0 exp(sum(z_i))
для i=0 to t-1
? Вероятно, быстрее вычислить, поскольку мы уже знаем последовательность z_t
.