gpt4 book ai didi

numpy - 我如何在 numpy 中向量化这个计算

转载 作者:行者123 更新时间:2023-12-01 12:20:13 24 4
gpt4 key购买 nike

如果 a 和 b 是适当大小的 numpy 数组,我如何向量化以下计算?

total = a[0]
for ix in range(1, len(a)):
total = total*b[ix-1] + a[ix]

最佳答案

没关系,有一个ufunc如果你做一些代数,这个技巧就会起作用。在这种情况下 ufuncmultiply诀窍是accumulate .

c = np.r_[np.multiply.accumulate(b[0:-1][::-1])[::-1], 1]
total2 = np.sum(a * c)

这是做什么的:从代数上讲,您要对 a[i] 求和乘以 b[i:]for i in range(a.size) .为此,翻转 b并获取除最后一个数字以外的所有数字的运行乘积(假设 ab 的长度相同),然后将其翻转回来。最后一个值应该是 1,因为最后的 a只是增加了值(value)。

测试

a = np.random.randint(1, 10, 40)
b = 1 + np.random.rand(40)

total = a[0]
for ix in range(1, len(a)):
total = total*b[ix-1] + a[ix]

total
278443993.10494208

total2
278443993.10494208

关于numpy - 我如何在 numpy 中向量化这个计算,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44940968/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com