2011-08-13 33 views
6

我有一個二維numpy數組(uint16),如何截斷某個障礙(比如255)之上的所有值到該障礙?其他值必須保持不變。使用嵌套循環似乎是無效和笨拙的。如何截斷二維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「SA不錯的介紹鏈接,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)