2012-07-09 56 views
1

是否有通过二维阵列进行迭代来存储到目前为止获得而沿着特定尺度遍历最大值的一个简单的方法。例如,我有一个数组:numpy的阵列迭代跟踪最大数目迄今

[[2 , 1, 5], 
[-1, -1, 4], 
[4, 3, 2], 
[2 , 3, 4]] 

,我想下面的输出:

[[2 , 2, 5], 
[-1, -1, 4], 
[4, 4, 4], 
[2 , 3, 4]] 

谢谢!

回答

5

简单;使用accumulate

>>> numpy.maximum.accumulate(a, axis=1) 
array([[ 2, 2, 5], 
     [-1, -1, 4], 
     [ 4, 4, 4], 
     [ 2, 3, 4]]) 
+0

确实,更优雅... – GL770 2012-07-09 22:48:29

0

如果计算时间不是问题,你可以这样做:

my_new_array = [ [max(my_array[i][:j+1]) for j in range(len(my_array[i]))] for i in range(len(my_array))] 

然而,它真的不计算时间效率。做2个循环可能会更有效率。

+0

谢谢..我可能会去使用循环。 – user1512829 2012-07-09 19:08:46