2011-08-13 7 views
6

나는 2 차원 배열 (uint16)을 가지고 있는데, 그 장벽을 넘어서 모든 장벽 (예 : 255)의 값을 어떻게자를 수 있습니까? 다른 값은 동일하게 유지되어야합니다. 중첩 루프를 사용하는 것은 비효율적이며 서투른 것처럼 보입니다. 후 ( :2D numpy 배열의 값을 자르는 방법

답변

5
import numpy as np 
my_array = np.array([[100, 200], [300, 400]],np.uint16) 
my_array[my_array > 255] = 255 

출력이

array([[100, 200], 
     [255, 255]], dtype=uint16) 
+0

작품! 감사 – nobody

6

이 경우 귀하의 질문에 JBernardo의 답변으로 비트 깊이와 같은 관련 아니었다 될 것입니다, 더 일반적인 방법은이 같은 것이해야 할 일 편집, 내 대답은

 
def trunc_to(my_array, limit): 
    too_high = my_array > limit 
    my_array[too_high] = limit 

Here은 'NumPy와의 부울 인덱싱에 대한 좋은 소개 링크를이야) 그의로 거의 지금과 동일합니다.

19

실제로 '클립', 이것에 대한 구체적인 방법이있다 :

import numpy as np 
my_array = np.array([[100, 200], [300, 400]],np.uint16) 
my_array.clip(0,255) # clip(min, max) 

출력 : 폭탄 같은

array([[100, 200], 
     [255, 255]], dtype=uint16) 
관련 문제