通过for循环和简单索引进行计算

2024-04-24 23:38:58 发布

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

decay = 0.1
data = np.array([100,200,300,400,500])
y = np.zeros(len(data))

for i in range(len(data)):
    if i == 0:
        y[i] = (1.0 - decay) * data[i]

    else:
        y[i] = (1.0 - decay) * data[i] + (decay * y[i - 1])
        
y

输出:

array([ 90.   , 189.   , 288.9  , 388.89 , 488.889])

现在,我通过索引将其缩短

decay = 0.1
data = np.array([100,200,300,400,500])
data = (1.0 - decay) * data
data[1:] = data[1:] + decay * data[0:-1]
data

输出:

array([ 90., 189., 288., 387., 486.])

我觉得我在这里做了一些错误,或者丢失了浮点值,或者没有得到累积值,因为两个输出都不匹配,第一个输出是正确的,这里的错误是什么