如何将“ np.inf”转换为整数类型?

时间:2019-06-28 18:26:38

标签: python numpy int

我想将np.inf的返回类型转换为int,默认情况下它返回float类型。

我尝试了以下方法,但都给出了错误。

int(np.inf)

OverflowError:无法将浮点无穷大转换为整数

(np.inf).astype(int64)

AttributeError:“浮动”对象没有属性“ astype”

2 个答案:

答案 0 :(得分:0)

有一个浮点数标准:“ IEEE 754”(不是特定于python)。该标准为+/- Infinity和NaN保留了一些特殊的字节序列。 对于整数,不保留这些特殊值,因此不可能有int无限。

我已经做了一些实验:您可以进行np.array([np.inf]).astype(int)[0],这会给您-9223372036854775808-(2 ** 64)/2)。 np.array([np.nan]).astype(int)[0]也会产生相同的值。

答案 1 :(得分:0)

不幸的是,由于注释表明没有,所以,如果您知道所需的整数类型,则可以使用np.iinfo并选择max或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