Атрибут flags
Атрибут flags класса dtype возвращает словарь, содержащий флаги,
которые описывают различные свойства типа данных. Эти флаги позволяют
узнать, обладает ли тип данных определёнными характеристиками,
например, является ли он встроенным или пользовательским, выровненным,
имеет ли объектные поля и другие особенности.
Синтаксис
dtype.flags
Атрибут возвращает объект типа словарь, где ключи - названия флагов, а значения - булевы значения, указывающие наличие соответствующего свойства у типа данных.
Пример
Давайте создадим простой тип данных и посмотрим его флаги:
import numpy as np
dt = np.dtype(np.int32)
res = dt.flags
print(res)
Результат выполнения кода:
{'hasobject': False, 'aligned': True, 'native': True, 'kind': 0, 'ownsdata': True, 'swap': False, 'fenced': False}
Пример
Рассмотрим флаги для типа данных с пользовательским полем:
import numpy as np
dt = np.dtype([('x', np.int64), ('y', np.float32)])
res = dt.flags
print(res)
Результат выполнения кода:
{'hasobject': False, 'aligned': True, 'native': True, 'kind': 1, 'ownsdata': True, 'swap': False, 'fenced': False}
Для составного типа данных флаг kind принимает значение 1,
что указывает на структурированный тип.
Пример
Проверим конкретные флаги для типа данных с объектами:
import numpy as np
dt = np.dtype('O')
has_object = dt.flags['hasobject']
is_aligned = dt.flags['aligned']
print(f"hasobject: {has_object}, aligned: {is_aligned}")
Результат выполнения кода:
"hasobject: True, aligned: True"
Тип данных для объектов Python имеет флаг hasobject,
установленный в значение True.
Пример
Создадим тип данных с пользовательским порядком байтов и проверим соответствующие флаги:
import numpy as np
dt = np.dtype('>i4')
is_native = dt.flags['native']
swapped = dt.flags['swap']
print(f"native: {is_native}, swap: {swapped}")
Результат выполнения кода:
"native: False, swap: True"
Для типа с порядком байтов от старшего к младшему флаг native
установлен в False, а флаг swap - в True.