Я хочу добавить массивы numpy с datatyp uint8. Я знаю, что значения в этих массивах могут быть достаточно большими для переполнения. Поэтому я получаю что-то вроде:
a = np.array([100, 200, 250], dtype=np.uint8)
b = np.array([50, 50, 50], dtype=np.uint8)
a += b
Теперь a [150 250 44]
. Однако вместо переполнения я хочу, чтобы значения, которые слишком велики для uint8, являются максимально допустимыми для uint8. Таким образом, мой желаемый результат был бы [150 250 255]
.
Я мог бы получить этот результат со следующим кодом:
a = np.array([100, 200, 250], dtype=np.uint8)
b = np.array([50, 50, 50], dtype=np.uint8)
c = np.zeros((1,3), dtype=np.uint16)
c += a
c += b
c[c>255] = 255
a = np.array(c, dtype=np.uint8)
Проблема в том, что мои массивы действительно большие, поэтому создание третьего массива с большим типом данных может быть проблемой памяти. Есть ли быстрый и эффективный способ памяти для достижения описанного результата?