Функция promote_types
Функция promote_types определяет
результирующий тип данных при операциях
между двумя разными типами. Она принимает
два типа данных и возвращает тип, который
может безопасно хранить значения обоих
исходных типов. Это полезно при
планировании операций с массивами разных
типов.
Синтаксис
np.promote_types(type1, type2)
Пример
Давайте определим результирующий тип для целого числа и числа с плавающей точкой:
import numpy as np
res = np.promote_types(np.int32, np.float32)
print(res)
Результат выполнения кода:
float64
Пример
Рассмотрим продвижение между целочисленными типами разной разрядности:
import numpy as np
res = np.promote_types(np.int8, np.int64)
print(res)
Результат выполнения кода:
int64
Пример
Продвижение между беззнаковым целым и знаковым целым всегда даёт знаковый тип:
import numpy as np
res = np.promote_types(np.uint16, np.int16)
print(res)
Результат выполнения кода:
int32
Пример
Функция работает и со строковыми типами данных. Продвижение между строками разной длины даёт строку максимальной длины:
import numpy as np
res = np.promote_types('S10', 'S20')
print(res)
Результат выполнения кода:
S20
Пример
Продвижение между числовым и строковым типом даёт строковый тип:
import numpy as np
res = np.promote_types(np.int32, 'U10')
print(res)
Результат выполнения кода:
<U11
Строка <U11 означает Unicode-строку
максимальной длины 11 символов. Длина
выбрана с запасом для представления
числового значения.
Пример
Функция promote_types часто
используется для проверки типов перед
сложными операциями с массивами:
import numpy as np
arr1 = np.array([1, 2, 3], dtype=np.int8)
arr2 = np.array([1.5, 2.5, 3.5], dtype=np.float32)
res_type = np.promote_types(arr1.dtype, arr2.dtype)
print(f"Result type: {res_type}")
arr_res = arr1 + arr2
print(f"Actual type: {arr_res.dtype}")
Результат выполнения кода:
Result type: float64
Actual type: float64
Смотрите также
-
функцию
can_cast,
которая проверяет возможность безопасного приведения типов -
функцию
result_type,
которая определяет результирующий тип для массива или списка входов -
функцию
common_type,
которая возвращает общий тип для массива объектов -
функцию
min_scalar_type,
которая определяет минимальный тип для скалярного значения