can_cast(from_, to, casting='safe')
Casting between a simple data type and a structured one is possible only for "unsafe" casting. Casting to multiple fields is allowed, but casting from multiple fields is not.
Casting from numeric to string types in 'safe' casting mode requires that the string dtype length is long enough to store the maximum integer/float value converted.
Data type, scalar, or array to cast from.
Data type to cast to.
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.
True if cast can occur according to the casting rule.
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.
Basic examples
>>> 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
Casting scalars
>>> 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
Array scalar checks the value, array does not
>>> np.can_cast(np.array(1000.0), np.float32) True
>>> np.can_cast(np.array([1000.0]), np.float32) False
Using the casting rules
>>> 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') TrueSee :
The following pages refer to to this document either explicitly or contain code examples using this.
numpy.find_common_type
numpy.result_type
numpy.min_scalar_type
numpy.core._multiarray_umath.min_scalar_type
numpy.promote_types
numpy.core._multiarray_umath.result_type
Hover to see nodes names; edges to Self not shown, Caped at 50 nodes.
Using a canvas is more power efficient and can get hundred of nodes ; but does not allow hyperlinks; , arrows or text (beyond on hover)
SVG is more flexible but power hungry; and does not scale well to 50 + nodes.
All aboves nodes referred to, (or are referred from) current nodes; Edges from Self to other have been omitted (or all nodes would be connected to the central node "self" which is not useful). Nodes are colored by the library they belong to, and scaled with the number of references pointing them