2011-08-13 17 views
6

İki boyutlu bir numpy dizim var (uint16), belirli bir engelin üzerindeki tüm değerleri (255) bu engele nasıl bölebilirim? Diğer değerler aynı kalmalıdır. Yuvalanmış bir döngü kullanmak etkisiz ve hantal gibi görünüyor. sonra ( :2B numpy dizisinin değerleri nasıl kırpılır

cevap

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

çıkış

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

İşleri! Teşekkürler – nobody

6

durumda soru JBernardo cevabı olarak biraz derinliğe kadar ilgili değildi olacak, daha genel yolu gibi bir şey olurdu yapmak düzenlemek, cevabım

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

Here 'numpy bool indeksleme için güzel intro bağlantısını sa) olarak onun hemen hemen aynı şimdi.

19

aslında 'klip', bunun için özel bir yöntem vardır:

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

çıkışı: bomba gibi

array([[100, 200], 
     [255, 255]], dtype=uint16) 
İlgili konular