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