更新numpy的陣列順序我有一個numpy的陣列v,我想用數組的當前元素上的功能更新每個元素:如何在沒有環路
v[i] = f(v, i)
一個基本的方式做這是使用一個循環
for i in xrange(2, len(v)):
v[i] = f(v, i)
因此用於更新訴值[I]是更新陣列v。有沒有辦法做這些更新沒有循環?
例如,
v = [f(v, i) for i in xrange(len(v))]
由於V不工作[I-1]當在綜合列表用於不被更新。
i將函數˚F可以取決於在列表上的幾個元素,那些具有索引低於我應該更新和那些與比我尚未更新索引時,如下面的例子:
v = [1, 2, 3, 4, 5]
f = lambda v, i: (v[i-1] + v[i])/v[i+1] # for i = [1,3]
f = lambda v, i: v[i] # for i = {0,4}
它應該返回
v = [1, (1+2)/3, (1+4)/4, ((5/4)+4)/5, 5]
考慮numpy的在大型陣列使用,O(N²)算法,實際上會比一個純Python循環更差,這甚至沒有矢量化。 – Veedrac 2014-09-25 18:09:23