1
我在我的代码中非常频繁地使用numpy数组。它的速度和方便的索引规则非常有用。现在,我正在寻找如何避免'for'循环以加快执行时间。为了简单起见,我们假设,我们有两个向量(名为a和b),每个向量都有10个元素。第二个向量(b)的第一个值等于1,则每个第n个值等于'(b [n-1] * 13 + a [n])/ 14'。的帮助下“for”循环,我可以写象下面这样:迭代numpy数组而无循环
import numpy as np
a = np.random.random(10)
b = np.ones(10)
for i in range(1, b.shape[0]):
b[i] = (b[i-1]*13 + a[i])/14
所以,我的问题是如何为循环和更快的做同样的事情没有?我如何使用numpy矢量化来执行该操作?提前致谢!
看起来每个循环都依赖于之前的循环,如果您知道其中一个稍后的值,那么您可以在此处对其进行并行化,但实际上这更像是一个编程问题的组合问题。 –
[此问题]的可能重复(http://stackoverflow.com/questions/4407984/is-a-for-loop-necessary-if-elements-of-the-a-numpy-vector-are-dependant-upon -t) – jotasi
如果你必须使用for循环,请看看cython。特别是对于这样一个简单的例子,Cython是一个不错的选择。 – Moritz