Тип int8
Тип данных int8 в NumPy представляет 8-битные знаковые целые числа. Он занимает 1 байт памяти и может хранить значения в диапазоне от -128 до 127 включительно. Этот тип полезен при работе с большими массивами данных, где важна экономия памяти, а значения не выходят за указанный диапазон.
При создании массива тип int8 можно указать через параметр dtype функции array или использовать встроенную константу np.int8.
Синтаксис
np.array(object, dtype=np.int8)
Пример
Создадим массив из целых чисел с явным указанием типа int8:
import numpy as np
arr = np.array([1, 2, 3, 4, 5], dtype=np.int8)
print(arr)
print(arr.dtype)
Результат выполнения кода:
[1 2 3 4 5]
int8
Пример
Попробуем сохранить в массив типа int8 число, выходящее за допустимый диапазон:
import numpy as np
arr = np.array([128, -129], dtype=np.int8)
print(arr)
Результат выполнения кода:
[-128 127]
Значения выходят за границы диапазона, поэтому происходит переполнение: 128 превращается в -128, а -129 в 127.
Пример
Создадим двумерный массив типа int8 и проверим его размер в памяти:
import numpy as np
arr = np.array([[1, 2, 3], [4, 5, 6]], dtype=np.int8)
print(arr)
print(arr.dtype)
print(arr.itemsize)
print(arr.nbytes)
Результат выполнения кода:
[[1 2 3]
[4 5 6]]
int8
1
6
Каждый элемент занимает 1 байт (itemsize = 1), общий размер массива 6 байт.
Пример
Преобразуем существующий массив в тип int8 с помощью метода astype:
import numpy as np
arr_float = np.array([1.5, 2.7, 3.9])
arr_int8 = arr_float.astype(np.int8)
print(arr_float)
print(arr_int8)
Результат выполнения кода:
[1.5 2.7 3.9]
[1 2 3]
При преобразовании дробные части отбрасываются (усечение в сторону нуля).