У меня есть двумерный массив numey (uint16), как я могу усечь все значения выше определенного барьера (скажем, 255) до этого барьера?Другие значения должны оставаться такими же.Использование вложенного цикла кажется неэффективным и неуклюжим.
на самом деле есть специальный метод для этого, 'clip':
import numpy as np my_array = np.array([[100, 200], [300, 400]],np.uint16) my_array.clip(0,255) # clip(min, max)
output:
array([[100, 200], [255, 255]], dtype=uint16)
Если ваш вопрос не был связан с битовой глубиной так, как ответ Дж. Бернардо, то более общий способ сделать это будет выглядеть примерно так: (после редактирования мой ответ теперь почти совпадает с его)
def trunc_to( my_array, limit ): too_high = my_array > limit my_array[too_high] = limit
Здесь хорошая вводная ссылка для индексирования numy bool.
import numpy as np my_array = np.array([[100, 200], [300, 400]],np.uint16) my_array[my_array > 255] = 255
вывод будет