Атрибут itemsize
Атрибут itemsize класса ndarray возвращает размер одного элемента массива в байтах. Этот атрибут доступен только для чтения и определяется типом данных массива. Например, для массива с типом int32 каждый элемент занимает 4 байта, а для float64 - 8 байт.
Синтаксис
arr.itemsize
Пример
Давайте создадим массив из целых чисел и проверим размер его элементов:
import numpy as np
arr = np.array([1, 2, 3, 4, 5])
print(arr.itemsize)
Результат выполнения кода:
8
По умолчанию целые числа в NumPy имеют тип int64, поэтому каждый элемент занимает 8 байт.
Пример
Давайте явно укажем тип данных при создании массива и посмотрим, как изменится размер элемента:
import numpy as np
arr_int32 = np.array([1, 2, 3, 4, 5], dtype=np.int32)
print(arr_int32.itemsize)
Результат выполнения кода:
4
Массив типа int32 занимает по 4 байта на элемент.
Пример
Рассмотрим массив чисел с плавающей точкой и массив логических значений:
import numpy as np
arr_float = np.array([1.0, 2.5, 3.7], dtype=np.float64)
arr_bool = np.array([True, False, True])
print(arr_float.itemsize)
print(arr_bool.itemsize)
Результат выполнения кода:
8
1
Тип float64 занимает 8 байт, а логический тип bool - 1 байт.
Пример
Атрибут itemsize можно использовать вместе с атрибутом size для вычисления общего размера массива в байтах:
import numpy as np
arr = np.array([1, 2, 3, 4, 5, 6, 7, 8, 9, 10])
total_bytes = arr.size * arr.itemsize
print(arr.itemsize)
print(arr.size)
print(total_bytes)
Результат выполнения кода:
8
10
80
Атрибут nbytes возвращает аналогичное значение более кратко.
Пример
Для многомерного массива размер элемента остаётся одинаковым для всех элементов:
import numpy as np
arr = np.array([[1, 2, 3], [4, 5, 6]], dtype=np.int16)
print(arr.itemsize)
print(arr.shape)
Результат выполнения кода:
2
(2, 3)