numpy.can_cast #

麻木的。can_cast ( from_ , to , casting = '安全' ) #

如果可以根据转换规则在数据类型之间进行转换,则返回 True。如果 from 是标量或数组标量,并且标量值可以在不溢出或截断的情况下转换为整数,则也返回 True。

参数
from_ dtype、dtype 说明符、标量或数组

要转换的数据类型、标量或数组。

dtype 或 dtype 说明符

要转换为的数据类型。

强制转换{'no', 'equiv', 'safe', 'same_kind', 'unsafe'},可选

控制可能发生的数据转换类型。

  • “no”意味着根本不应该转换数据类型。

  • 'equiv' 表示仅允许字节顺序更改。

  • “安全”意味着只允许可以保留值的强制转换。

  • “same_kind”表示仅允许安全强制转换或某种类型内的强制转换,例如从 float64 到 float32。

  • “不安全”意味着可以进行任何数据转换。

返回
输出布尔值

如果可以根据转换规则进行转换,则为 true。

也可以看看

dtype,result_type

笔记

版本 1.17.0 中进行了更改:简单数据类型和结构化数据类型之间的转换仅适用于“不安全”转换。允许转换到多个字段,但不允许从多个字段进行转换。

在版本 1.9.0 中更改:在“安全”转换模式下从数字类型转换为字符串类型要求字符串数据类型长度足够长以存储转换的最大整数/浮点值。

例子

基本示例

>>> 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