更新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