2012-07-09 65 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