Тип uint8
Тип uint8 (unsigned integer 8-bit) в NumPy
представляет собой беззнаковое целое число,
занимающее 1 байт (8 бит). Диапазон значений,
которые можно хранить в этом типе, составляет
от 0 до 255 включительно. Этот тип данных широко
применяется для хранения пикселей изображений
в градациях серого, байтовых потоков и любых
других данных, где значения не могут быть
отрицательными и требуется эффективное
использование памяти.
Синтаксис
Указание типа uint8 при создании массива:
import numpy as np
arr = np.array([1, 2, 3], dtype=np.uint8)
Использование строкового псевдонима:
import numpy as np
arr = np.array([1, 2, 3], dtype='uint8')
Пример
Создадим массив из чисел и явно укажем тип uint8:
import numpy as np
arr = np.array([10, 20, 30, 40, 50], dtype=np.uint8)
print(arr)
print(arr.dtype)
Результат выполнения кода:
[10 20 30 40 50]
uint8
Пример
Попробуем создать массив с числом, выходящим за пределы
допустимого диапазона uint8 (от 0 до 255):
import numpy as np
arr = np.array([256, -1, 100], dtype=np.uint8)
print(arr)
Результат выполнения кода:
[ 0 255 100]
Значение 256 переполнилось до 0,
а отрицательное значение -1 преобразовалось
в максимальное значение 255. Это происходит
из-за особенностей беззнаковых целочисленных типов.
Пример
Использование uint8 для создания массива
из байтовых данных. В этом примере мы преобразуем
строку в байты и создадим массив:
import numpy as np
data = b'hello'
arr = np.frombuffer(data, dtype=np.uint8)
print(arr)
Результат выполнения кода:
[104 101 108 108 111]
Пример
Преобразование существующего массива в тип uint8
с помощью метода astype:
import numpy as np
arr_float = np.array([1.5, 2.9, 3.1, 4.8])
arr_uint8 = arr_float.astype(np.uint8)
print(arr_float)
print(arr_uint8)
Результат выполнения кода:
[1.5 2.9 3.1 4.8]
[1 2 3 4]
При преобразовании дробные части отбрасываются,
а целые значения сохраняются, если они входят в
диапазон uint8.