简体   繁体   中英

How can I convert 'np.inf' to an integer type?

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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM