numpy.can_cast
-
numpy.can_cast(from_, to, casting='safe') -
Возвращает True, если преобразование между типами данных может произойти в соответствии с правилом преобразования. Если from является скаляром или скаляром массива, также возвращает True, если скалярное значение может быть преобразовано без переполнения или усечения в целое число.
- Параметры
-
-
from_dtype, dtype specifier, scalar, or array -
Тип данных, скаляр или массив для преобразования.
-
todtype or dtype specifier -
Тип данных для преобразования.
-
casting{‘no’, ‘equiv’, ‘safe’, ‘same_kind’, ‘unsafe’}, optional -
Управляет тем, какой вид преобразования данных может произойти.
- ‘no’ означает, что типы данных вообще не должны преобразовываться.
- ‘equiv’ означает, что разрешаются только изменения порядка байтов.
- ‘safe’ означает, что разрешаются только преобразования, которые могут сохранить значения.
- ‘same_kind’ означает, что разрешаются только безопасные преобразования или преобразования внутри одного типа, например, float64 в float32.
- ‘unsafe’ означает, что могут выполняться любые преобразования данных.
-
- Возвращает
-
-
outbool -
True, если преобразование может произойти в соответствии с правилом преобразования.
-
См. также
Примечания
Изменено в версии 1.17.0: Преобразование между простым типом данных и структурированным возможно только для преобразования «unsafe». Преобразование к нескольким полям разрешено, но преобразование из нескольких полей не разрешено.
Изменено в версии 1.9.0: Преобразование из числовых типов в строковые типы в режиме преобразования ‘safe’ требует, чтобы длина строкового типа была достаточно большой, чтобы хранить максимальное значение целого числа/числа с плавающей точкой, преобразованное.
Примеры
Основные примеры
>>> np.can_cast(np.int32, np.int64) True >>> np.can_cast(np.float64, complex) True >>> np.can_cast(complex, float) False
>>> np.can_cast('i8', 'f8') True >>> np.can_cast('i8', 'f4') False >>> np.can_cast('i4', 'S4') FalseПреобразование скаляров
>>> np.can_cast(100, 'i1') True >>> np.can_cast(150, 'i1') False >>> np.can_cast(150, 'u1') True
>>> np.can_cast(3.5e100, np.float32) False >>> np.can_cast(1000.0, np.float32) True
Скаляр массива проверяет значение, массив — нет
>>> np.can_cast(np.array(1000.0), np.float32) True >>> np.can_cast(np.array([1000.0]), np.float32) False
Использование правил преобразования
>>> np.can_cast('i8', 'i8', 'no') True >>> np.can_cast('<i8', '>i8', 'no') False>>> np.can_cast('<i8', '>i8', 'equiv') True >>> np.can_cast('<i4', '>i8', 'equiv') False>>> np.can_cast('<i4', '>i8', 'safe') True >>> np.can_cast('<i8', '>i4', 'safe') False>>> np.can_cast('<i8', '>i4', 'same_kind') True >>> np.can_cast('<i8', '>u4', 'same_kind') False>>> np.can_cast('<i8', '>u4', 'unsafe') True
© 2005–2020 NumPy Developers
Licensed under the 3-clause BSD License.
https://numpy.org/doc/1.19/reference/generated/numpy.can_cast.html