Атрибут alignment
Атрибут alignment класса dtype возвращает
выравнивание (alignment) типа данных в байтах.
Выравнивание определяет, по какому адресу в памяти
должны располагаться элементы массива для оптимального
доступа. Значение выравнивания всегда равно размеру
элемента для простых типов или максимальному
выравниванию среди полей для составных типов.
Синтаксис
dtype.alignment
Атрибут не принимает параметров и возвращает целое число, обозначающее выравнивание типа данных в байтах.
Пример
Давайте получим выравнивание для целочисленного типа int32:
import numpy as np
dt = np.dtype('int32')
print(dt.alignment)
Результат выполнения кода:
4
Пример
Давайте сравним выравнивание для разных числовых типов:
import numpy as np
dt_int8 = np.dtype('int8')
dt_int16 = np.dtype('int16')
dt_int64 = np.dtype('int64')
dt_float64 = np.dtype('float64')
print(dt_int8.alignment)
print(dt_int16.alignment)
print(dt_int64.alignment)
print(dt_float64.alignment)
Результат выполнения кода:
1
2
8
8
Как видно, выравнивание равно размеру соответствующего типа данных в байтах.
Пример
Давайте создадим составной тип данных и посмотрим на его выравнивание:
import numpy as np
dt = np.dtype([('x', 'int8'), ('y', 'float64')])
print(dt.alignment)
Результат выполнения кода:
8
Выравнивание составного типа равно максимальному выравниванию среди его полей, то есть 8 байт (от типа float64).
Пример
Давайте создадим тип данных с выравниванием, отличным от размера, используя параметр align:
import numpy as np
dt = np.dtype([('a', 'int8'), ('b', 'int32')], align=True)
print(dt.alignment)
Результат выполнения кода:
4
При создании с параметром align=True выравнивание устанавливается равным максимальному выравниванию среди полей.