РЕПЕТИТОР математика физика информатика
Для школьников и студентов. Подтягивание пробелов. ЦЭ, ЦТ, ОГЭ, ЕГЭ.
Идет набор на ЛЕТО. Жмите для подробностей:)
356 of 541 menu

Тип bytes

Тип данных bytes в библиотеке NumPy предназначен для хранения байтовых строк фиксированной длины. Он соответствует встроенному типу Python bytes, но с одним важным отличием: все строки в массиве должны иметь одинаковую длину. Если в массиве встречаются строки разной длины, они автоматически дополняются нулевыми байтами справа до максимальной длины. Тип bytes используется, когда необходимо работать с бинарными данными, сетевыми протоколами или при взаимодействии с низкоуровневыми системами.

Строковый литерал в Python для типа bytes записывается с префиксом b, например b'hello' или b'\x00\x01\x02'. При создании массива с элементами разных размеров, NumPy автоматически приводит их к общей длине, дополняя короткие строки нулевыми байтами.

Синтаксис

np.array(object, dtype=np.bytes_) np.array(object, dtype='S10') np.array(object, dtype='bytes')

Пример

Создадим одномерный массив из байтовых строк одинаковой длины:

import numpy as np arr = np.array([b'abc', b'def', b'ghi']) print(arr) print(arr.dtype)

Результат выполнения кода:

[b'abc' b'def' b'ghi'] |S3

Пример

Создадим массив из байтовых строк разной длины. NumPy автоматически выровняет их под максимальную длину:

import numpy as np arr = np.array([b'x', b'yz', b'uvw', b'abcd']) print(arr) print(arr.dtype) print(arr.itemsize)

Результат выполнения кода:

[b'x' b'yz' b'uvw' b'abcd'] |S4 4

Все строки были дополнены нулевыми байтами до длины 4, поэтому размер одного элемента (itemsize) равен 4 байтам.

Пример

Явное указание типа bytes через параметр dtype при создании массива:

import numpy as np arr = np.array(['hello', 'world', 'test'], dtype='S5') print(arr) print(arr.dtype)

Результат выполнения кода:

[b'hello' b'world' b'test'] |S5

Пример

Доступ к отдельным байтам в элементах массива типа bytes:

import numpy as np arr = np.array([b'abcde', b'fghij', b'klmno'], dtype='S5') print(arr[0]) print(arr[0][2])

Результат выполнения кода:

b'abcde' 99

При обращении к отдельному байту возвращается целое число (ASCII-код символа). В примере символ 'c' имеет код 99.

Пример

Преобразование массива типа bytes в массив типа str (строки Unicode) с помощью метода astype:

import numpy as np bytes_arr = np.array([b'hello', b'world'], dtype='S5') str_arr = bytes_arr.astype('U5') print(bytes_arr) print(str_arr) print(str_arr.dtype)

Результат выполнения кода:

[b'hello' b'world'] ['hello' 'world'] <U5

Пример

Создание двумерного массива с байтовыми строками:

import numpy as np arr = np.array([[b'a', b'bc', b'def'], [b'g', b'hi', b'jkl']], dtype='S3') print(arr) print(arr.dtype)

Результат выполнения кода:

[[b'a' b'bc' b'def'] [b'g' b'hi' b'jkl']] |S3

Смотрите также

  • тип str,
    который хранит строки Unicode фиксированной длины
  • тип void,
    который предназначен для хранения произвольных бинарных данных
  • тип object,
    который может хранить любые объекты Python
  • тип datetime64,
    который представляет дату и время в фиксированном формате
Мы используем cookie для работы сайта, аналитики и персонализации. Обработка данных происходит согласно Политике конфиденциальности.
принять все настроить отклонить