这个能用numpy向量化吗?

2024-04-19 13:26:07 发布

您现在位置:Python中文网/ 问答频道 /正文

我有这个函数,我想知道是否有一种方法来矢量化它,因为我在这个上面运行了很多循环,它变得非常慢。w、 x、y、z和n是常数,input_vec是长度为n的向量

def calc_v(w, x, y, z, input_vec, n):

    v = np.empty(n)

    v[0] = 1

    for i in range(1, n):
        past_v = v[i - 1]
        past_input = input_vec[i - 1]

        # UCL
        part1 = (1 / past_v) * (x * (y - past_v) - ((w*w) / 2)) * z
        part2 = w * (1 / math.sqrt(past_v)) * math.sqrt(z) * past_input

        v[i] = past_v * exp(part1 + part2)

    return v

Tags: 方法函数inputdefnp常数calcmath