NumPy, как быть более элегантным? - PullRequest
0 голосов
/ 10 мая 2019

Какой лучший / короткий способ написать это, используя numpy. оба img имеют одинаковую форму и тип. Не использовал это слишком много

def cut_whole(img_to_cut, img_to_use):
    #we assume unit8 dtype
    assert img_to_cut.shape==img_to_use.shape

    #iterate all,assume shape is (:,:,4)
    (x,y,c)=img_to_cut.shape
    for i in range(x):
        for j in range(y):
            if(img_to_use[i,j,3]>0):
                img_to_cut[i,j,:]=0    
    return img_to_cut

1 Ответ

4 голосов
/ 10 мая 2019

Это должно сделать это

img_to_cut[img_to_use[:, :, 3:4] > 0] = 0

Обратите внимание, что выбор последнего канала выполняется таким образом, чтобы сохранить третью ось длины один; это позволяет полученной логической маске транслироваться на другой массив.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...