I want to convert the return type of np.inf
to int
, by default it returns float
type.
I have tried the followings, but both give erros.
int(np.inf)
OverflowError: cannot convert float infinity to integer
(np.inf).astype(int64)
AttributeError: 'float' object has no attribute 'astype'
There is a standard for floating point numbers: "IEEE 754" (it is not specific to python). This standard reserves some special bytes sequences for +/-Infinity and NaN. For integer such special values are not reserved so it is impossible to have an int infinity.
I have done some experimenting: you can do np.array([np.inf]).astype(int)[0]
this will give you -9223372036854775808
( -(2 ** 64)/2
). np.array([np.nan]).astype(int)[0]
also produces the same value.
Unfortunately as the comments suggest no there isn't, but if you know the integer type you want, you can use np.iinfo and pick max or min
np.iinfo(np.int32).max # ---- 2147483647
np.iinfo(np.int32).min # ---- -2147483648
np.iinfo(np.int64).max # ---- 9223372036854775807
np.iinfo(np.int64).min # ---- -9223372036854775808
The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.