Функция can_cast
Функция can_cast проверяет возможность приведения
данных от одного типа к другому. Первым параметром
функция принимает исходный тип данных, вторым -
целевой тип. Третьим параметром можно указать
режим приведения: 'no', 'equiv',
'safe', 'same_kind' или 'unsafe'.
Синтаксис
np.can_cast(from_type, to_type, casting='safe')
Режимы приведения
Функция поддерживает пять режимов проверки:
# 'no' - только точное совпадение типов
# 'equiv' - эквивалентные типы
# 'safe' - безопасное приведение без потери данных
# 'same_kind' - приведение в рамках одного семейства
# 'unsafe' - любое приведение
Пример с безопасным приведением
Проверим возможность безопасного приведения целого числа к числу с плавающей точкой:
import numpy as np
res = np.can_cast(np.int32, np.float64)
print(res)
Результат выполнения кода:
True
Приведение возможно, так как float64
может хранить все значения int32.
Пример с небезопасным приведением
Проверим приведение числа с плавающей точкой к целому числу:
import numpy as np
res = np.can_cast(np.float64, np.int32)
print(res)
Результат выполнения кода:
False
Приведение невозможно, так как теряется дробная часть числа.
Пример с режимом same_kind
Проверим приведение целого числа к комплексному
с режимом 'same_kind':
import numpy as np
res = np.can_cast(np.int32, np.complex128, casting='same_kind')
print(res)
Результат выполнения кода:
True
Приведение разрешено, так как целые числа и комплексные числа относятся к одному семейству числовых типов.
Пример с несовместимыми типами
Проверим приведение строкового типа к числовому:
import numpy as np
res = np.can_cast(np.str_, np.int32)
print(res)
Результат выполнения кода:
False
Приведение невозможно, так как строки нельзя преобразовать к числам безопасно.
Пример с проверкой массива
Проверим, можно ли привести существующий массив к другому типу данных:
import numpy as np
arr = np.array([1, 2, 3, 4, 5], dtype=np.int32)
res = np.can_cast(arr.dtype, np.float64)
print(res)
Результат выполнения кода:
True
Массив можно безопасно преобразовать
к типу float64.
Пример с режимом unsafe
Режим 'unsafe' разрешает любое приведение,
даже с потерей данных:
import numpy as np
res = np.can_cast(np.float64, np.int32, casting='unsafe')
print(res)
Результат выполнения кода:
True
При режиме 'unsafe' функция возвращает
True для любых типов данных.
Смотрите также
-
функцию
promote_types,
которая определяет результирующий тип при смешивании двух типов -
функцию
result_type,
которая возвращает тип, полученный при применении операции к аргументам -
функцию
min_scalar_type,
которая определяет минимальный тип для хранения скалярного значения -
функцию
common_type,
которая находит общий тип для массива и скаляра