Тип данных np.unit8 в Python — это 8-битный целочисленный тип без знака, используемый в библиотеке NumPy и способный представлять значения от 0 до 255. Он очень эффективен для приложений, чувствительных к памяти, благодаря своему компактному размеру.
Обычно используемый при обработке изображений файл numpy.uint8 идеально подходит для обработки массивов значений пикселей и для хранения данных, значения которых попадают в его диапазон, обеспечивая эффективное использование памяти при обработке больших наборов данных.
NumPy, фундаментальный пакет для научных вычислений на Python, предлагает множество типов данных для разных типов числовых данных. Среди них — numpy.uint8, беззнаковый 8-битный целочисленный тип.
- Характеристики
- Тип
- Сравнение с другими типами данных NumPy
- Пример 1. Создание массива Python uint8 в NumPy
- Пример 2: тип данных, используемый при обработке изображений
- Пример 3: для демонстрации эффективности использования памяти
Характеристики
- Целое число без знака: numpy.uint8 представляет 8-битное целое число без знака. Отсутствие знака означает, что он может представлять только неотрицательные значения.
- Диапазон значений: он может представлять значения от 0 до 255. Это связано с тем, что 8 бит могут представлять 28 значений, а без отрицательных чисел этот диапазон составляет от 0 до 255.
- Эффективность памяти: используя всего 8 бит, это компактный тип данных, что позволяет эффективно использовать память для хранения больших массивов данных, значения которых попадают в его диапазон.
Тип
- Обработка изображений: он широко используется при обработке изображений, поскольку изображения часто представляются в виде массивов со значениями пикселей обычно в диапазоне от 0(черный) до 255(белый) для изображений в оттенках серого.
- Хранение и обработка данных: в сценариях, где известно, что значения данных находятся в диапазоне 0–255, использование np.unit8 в Python может сэкономить память, что особенно полезно для обработки больших наборов данных.
Сравнение с другими типами данных NumPy
- По сравнению с numpy.int8: тип np.int8 представляет собой 8-битное целое число со знаком в диапазоне от -128 до 127. np.unit8 в Python часто предпочтительнее, когда отрицательные значения не требуются, поскольку он предлагает более широкий диапазон положительных значений.
- Против больших целочисленных типов: более крупные типы, такие как numpy.int16, numpy.int32 и т. д., предлагают более широкие диапазоны, но за счет увеличения использования памяти. np.unit8 в Python предпочтительнее, если его диапазон достаточен и эффективность использования памяти является приоритетом.
Давайте посмотрим несколько примеров того, как numpy.uint8 используется в Python.
Пример 1. Создание массива Python uint8 в NumPy
import numpy as np array_uint8 = np.array([0, 128, 255], dtype=np.uint8) print(array_uint8) print(type(array_uint8[1]))
Вывод: здесь мы используем параметр dtype в функции array() для присвоения значений этого типа данных.
После создания массива мы также проверяем тип значений, чтобы подтвердить, что они присвоены правильному типу данных, с помощью функции type().
[ 0 128 255]
Пример 2: тип данных, используемый при обработке изображений
from PIL import Image import numpy as np # Loading an image and converting it to a numpy array img = Image.open("C:/Users/kumar/OneDrive/Desktop/Pythonguides_image.jpg") img_array = np.array(img, dtype=np.uint8) print(img_array) print(type(img_array[1]))
Вывод: реализация кода приведена ниже:
[[[255 255 255] [255 255 255] [255 255 255] ... [255 255 255] [255 255 255] [255 255 255]] [[255 255 255] [255 255 255] [255 255 255] ... [255 255 255] [255 255 255] [255 255 255]] [[255 255 255] [255 255 255] [255 255 255] ... [255 255 255] [255 255 255] [255 255 255]] ... [[251 251 251] [251 251 251] [251 251 251] ... [251 251 251] [251 251 251] [251 251 251]] [[251 251 251] [251 251 251] [251 251 251] ... [251 251 251] [251 251 251] [251 251 251]] [[251 251 251] [251 251 251] [251 251 251] ... [251 251 251] [251 251 251] [251 251 251]]]
Пример 3: для демонстрации эффективности использования памяти
import numpy as np large_array_uint8 = np.zeros((1000, 1000), dtype=np.uint8) large_array_int32 = np.zeros((1000, 1000), dtype=np.int32) print(large_array_uint8.nbytes) print(large_array_int32.nbytes)
Вывод:
1000000 4000000