-
numpy.can_cast(from, totype, casting = 'safe')
-
Returns True if cast between data types can occur according to the casting rule. If from is a scalar or array scalar, also returns True if the scalar value can be cast without overflow or truncation to an integer.
Parameters: from : dtype, dtype specifier, scalar, or array
Data type, scalar, or array to cast from.
totype : dtype or dtype specifier
Data type to cast to.
casting : {?no?, ?equiv?, ?safe?, ?same_kind?, ?unsafe?}, optional
Controls what kind of data casting may occur.
- ?no? means the data types should not be cast at all.
- ?equiv? means only byte-order changes are allowed.
- ?safe? means only casts which can preserve values are allowed.
- ?same_kind? means only safe casts or casts within a kind, like float64 to float32, are allowed.
- ?unsafe? means any data conversions may be done.
Returns: out : bool
True if cast can occur according to the casting rule.
See also
Notes
Starting in NumPy 1.9, can_cast function now returns False in ?safe? casting mode for integer/float dtype and string dtype if the string dtype length is not long enough to store the max integer/float value converted to a string. Previously can_cast in ?safe? mode returned True for integer/float dtype and a string dtype of any length.
Examples
Basic examples
123456>>> np.can_cast(np.int32, np.int64)
True
>>> np.can_cast(np.float64, np.
complex
)
True
>>> np.can_cast(np.
complex
, np.
float
)
False
123456>>> np.can_cast(
'i8'
,
'f8'
)
True
>>> np.can_cast(
'i8'
,
'f4'
)
False
>>> np.can_cast(
'i4'
,
'S4'
)
False
Casting scalars
123456>>> np.can_cast(
100
,
'i1'
)
True
>>> np.can_cast(
150
,
'i1'
)
False
>>> np.can_cast(
150
,
'u1'
)
True
1234>>> np.can_cast(
3.5e100
, np.float32)
False
>>> np.can_cast(
1000.0
, np.float32)
True
Array scalar checks the value, array does not
1234>>> np.can_cast(np.array(
1000.0
), np.float32)
True
>>> np.can_cast(np.array([
1000.0
]), np.float32)
False
Using the casting rules
1234>>> np.can_cast(
'i8'
,
'i8'
,
'no'
)
True
>>> np.can_cast(
'<i8'
,
'>i8'
,
'no'
)
False
1234>>> np.can_cast(
'<i8'
,
'>i8'
,
'equiv'
)
True
>>> np.can_cast(
'<i4'
,
'>i8'
,
'equiv'
)
False
1234>>> np.can_cast(
'<i4'
,
'>i8'
,
'safe'
)
True
>>> np.can_cast(
'<i8'
,
'>i4'
,
'safe'
)
False
1234>>> np.can_cast(
'<i8'
,
'>i4'
,
'same_kind'
)
True
>>> np.can_cast(
'<i8'
,
'>u4'
,
'same_kind'
)
False
12>>> np.can_cast(
'<i8'
,
'>u4'
,
'unsafe'
)
True
numpy.can_cast()

2025-01-10 15:47:30
Please login to continue.