Spec-Zone.ru › NumPy 1.10

numpy.can_cast

numpy.can_cast(from, totype, casting = 'safe')

Возвращает True, если преобразование между типами данных может произойти в соответствии с правилом преобразования. Если from — скаляр или скаляр массива, также возвращает True, если значение скаляра может быть преобразовано без переполнения или усечения в целое число.

Параметры:

from : dtype, спецификатор dtype, скаляр или массив

Тип данных, скаляр или массив для преобразования.

totype : dtype или спецификатор dtype

Тип данных для преобразования.

casting : {‘no’, ‘equiv’, ‘safe’, ‘same_kind’, ‘unsafe’}, необязательно

Управляет тем, какой тип преобразования данных может произойти.

  • ‘no’ означает, что типы данных вообще не должны преобразовываться.
  • ‘equiv’ означает, что разрешены только изменения порядка байтов.
  • ‘safe’ означает, что разрешены только преобразования, которые могут сохранить значения.
  • ‘same_kind’ означает, что разрешены только безопасные преобразования или преобразования в пределах одного типа, например, float64 в float32.
  • ‘unsafe’ означает, что могут быть выполнены любые преобразования данных.
Возвращает:

out : bool

True, если преобразование может произойти в соответствии с правилом преобразования.

См. также

dtype, result_type

Замечания

Начиная с NumPy 1.9, функция can_cast теперь возвращает False в режиме преобразования ‘safe’ для целочисленных/плавающих типов данных и строкового типа данных, если длина строкового типа данных недостаточно велика для хранения максимального целочисленного/плавающего значения, преобразованного в строку. Ранее can_cast в режиме ‘safe’ возвращала True для целочисленного/плавающего типа данных и строкового типа данных любой длины.

Примеры

Базовые примеры

>>> np.can_cast(np.int32, np.int64)
True
>>> np.can_cast(np.float64, np.complex)
True
>>> np.can_cast(np.complex, np.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

© 2008–2016 NumPy Developers
Licensed under the NumPy License.
https://docs.scipy.org/doc/numpy-1.10.1/reference/generated/numpy.can_cast.html

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API