Bu özel işlev için birkaç yaklaşım listelenebilir.
# 1 Yaklaşım: Sen yerinde ayarı için boolean indexing
kullanabilirsiniz -
img[mask] = (img[mask]*0.5).astype(int)
Yaklaşım # 2: Ayrıca muhtemelen daha sezgisel çözüm için np.where
kullanabilirsiniz -
img_out = np.where(mask,(img*0.5).astype(int),img)
np.where(mask,A,B)
sözdizimi olan
np.where
ile
,iki eşit şekilli dizi arasında seçim yapıyoruz A
ve B
ile aynı şekilde yeni bir dizi oluşturmak içinve B
. Seçim, A
ve B
ile aynı şekilde olan mask
öğesindeki öğelere göre yapılır. Böylece, mask
'daki her True
öğesi için A
, aksi halde B
'u seçiyoruz. Bunu bizim durumumuza çeviren A
(img*0.5).astype(int)
ve B
img
olur.
Yaklaşım # 3: yerleşik bir tam bu görev için en yakın gibi görünüyor ve yerinde ayarını yapmak için kullanılabilir, şöyle np.putmask
Orada var -
np.putmask(img, mask, (img*0.5).astype('uint8'))
Aslında fonksiyon dönmelidir Maske altındaki her hücre için aralıkta (0, 255) rastgele değer. –