Я пытаюсь добавить скалярное значение по определенным индексам в массив numpy, который имеет тип numpy.uint8
. Есть ли способ убедиться, что сложение обрезается до определенного максимума, чтобы сумма не переполнялась? Вот как этого добиться с помощью цикла for, но это медленно и неэффективно. Есть ли способ использовать np.add.at
или другую функцию, чтобы сделать это быстрее?
change_by = 80
indices = [(0,0), (100, 100), (23, 45)]
for idx in indices:
output_image[idx[0], idx[1]] = min(255, image[idx[0], idx[1]] + change_by)
Это ограничивает максимальное значение для каждого элемента равным 255
. Есть ли более эффективный способ добиться этого? Спасибо!
uint8
, и после использованияnp.add.at
сумма уже превысила 255. Поэтому я не могу обрезать постфактум. Могу ли я сделать отсечение в самом добавлении, как я делаю это в цикле? Я обновил вопрос с этой деталью 11.11.2020