Numpy数组 - 根据前一个元素的变化改变下一个元素

3

假设我有两个numpy数组:

import numpy as np
a = np.ones(5)
b = np.array([1.0, 1.1, 1.05, 1.2, 1.25])

我希望将元素 a[1]=a[0]*b[1] 转换为新元素 a[1], 然后使用 new_a 计算 a[2]=new_a*b[2]。这是否可以在numpy中不使用循环实现? 使用循环的代码如下:
for i in range(len(a)-1):
    a[i+1] = a[i]*b[i+1]
print (a)

打印:
[ 1.      1.1     1.155   1.386   1.7325] 
1个回答

4
这被称为“累积乘积”。已经有一个内置函数cumprod来实现此功能。
>>> numpy.cumprod([1.0, 1.1, 1.05, 1.2, 1.25])
array([ 1.    ,  1.1   ,  1.155 ,  1.386 ,  1.7325])

你确实解决了我的特定问题,但是如果有一个不能忽略“a”值的一般情况呢? - enedene
@enedene:如果您可以修改b,则可以在调用cumprod之前执行b[0] *= a[0],或者将整个结果乘以a[0](即cumprod(...) * a[0])。 - kennytm

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接