Атрибут num
Атрибут num класса dtype возвращает целочисленный код,
соответствующий типу данных. Этот код используется внутри NumPy
для идентификации типа данных и может быть полезен при
программной проверке типов или при работе с низкоуровневыми
операциями. Каждому типу данных в NumPy соответствует
уникальное целое число.
Синтаксис
dtype.num
Атрибут не принимает никаких аргументов и возвращает целое число, представляющее тип данных.
Пример
Давайте получим числовой код для различных встроенных типов данных:
import numpy as np
dtype_int32 = np.dtype('int32')
dtype_float64 = np.dtype('float64')
dtype_bool = np.dtype('bool')
dtype_str = np.dtype('U10')
print(dtype_int32.num)
print(dtype_float64.num)
print(dtype_bool.num)
print(dtype_str.num)
Результат выполнения кода:
5
11
0
22
Пример
Давайте получим числовой код для массива с целыми числами:
import numpy as np
arr = np.array([1, 2, 3, 4, 5])
dtype = arr.dtype
print(dtype.num)
Результат выполнения кода:
3
Код 3 соответствует типу данных int32, который является
стандартным для целых чисел в NumPy на большинстве платформ.
Пример
Используем атрибут num для проверки типа данных в коде:
import numpy as np
arr_int = np.array([1, 2, 3])
arr_float = np.array([1.0, 2.0, 3.0])
arr_str = np.array(['a', 'b', 'c'])
# Integer type codes: 0-9 typically represent integers
if arr_int.dtype.num <= 9:
print("Integer array")
# Float type codes: 10-13 typically represent floats
if arr_float.dtype.num >= 10 and arr_float.dtype.num <= 13:
print("Float array")
# Print all codes
print(arr_int.dtype.num)
print(arr_float.dtype.num)
print(arr_str.dtype.num)
Результат выполнения кода:
"Integer array"
"Float array"
3
11
22
Как видно из примера, разные типы данных имеют различные
числовые коды, что позволяет использовать атрибут num
для программной проверки типов.
Пример
Получим числовой код для пользовательского составного типа данных:
import numpy as np
dtype_person = np.dtype([
('name', 'U20'),
('age', 'int32'),
('height', 'float32')
])
print(dtype_person.num)
print(dtype_person.fields)
Результат выполнения кода:
23
{'name': (dtype('<U20'), 0), 'age': (dtype('int32'), 80), 'height': (dtype('float32'), 84)}
Составные типы данных имеют свой собственный числовой код, который отличается от кодов базовых типов.