2012-07-09 3 views
1

특정 차원을 따라 이동하면서 지금까지 얻은 최대 값을 저장하기 위해 2 차원 배열을 반복하는 간단한 방법이 있습니까? 예를 들어, 내가 배열이 있습니다지금까지의 최대 개수를 추적하기위한 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]] 

감사합니다! 정말하지 계산 시간 효율적입니다 그러나

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

: 계산 시간이 문제가 아닌 경우

답변

5

쉬운; accumulate 사용

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

사실, 훨씬 더 우아한 ... – GL770

0

, 당신은 뭔가를 할 수 있습니다. 아마 2 루프를하는 것이 훨씬 더 효율적일 것입니다.

+0

Thanks..I 아마 루프를 사용하여 이동합니다. – user1512829