Векторизованная арифметика c в массиве не работает, но работает итерация по каждому элементу - PullRequest
0 голосов
/ 21 марта 2020

Я пытаюсь преобразовать диапазон интенсивности изображения со значениями от 0 -> 255 до 100 -> 200 с python.

Мне удалось заставить его работать в его итеративной форме :

for i in range(0,512):
    for j in range (0,512):
        new_img[i][j] = (img[i][j] * 100 + 25500)//255;

Вывод при печати:

[[190 189 190 ... 178 178 179]
 [189 189 190 ... 178 178 177]
 [190 191 192 ... 178 178 177]
 ...
 [140 142 143 ... 128 116 110]
 [140 145 140 ... 126 115 112]
 [144 145 146 ... 128 116 110]]

Однако, когда Я пробую векторизованный подход:

new_img_v = (img * 100 + 25500)//255;

Я получаю следующий результат:

[[100 100 100 ... 100 100 100]
 [100 100 100 ... 100 100 100]
 [100 100 100 ... 100 100 100]
 ...
 [100 100 100 ... 100 100 100]
 [100 100 100 ... 100 100 100]
 [100 100 100 ... 100 100 100]]

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

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