如何获取有效Numpy数据类型的范围?

64 投票
2 回答
66553 浏览
提问于 2025-04-15 15:34

我想知道某种特定的Numpy数据类型(比如 np.int64np.uint32np.float32 等等)可以存储的所有有效值的范围是什么(比如 np.int32 可以存储的数字最大到 2**31-1)。当然,我想理论上可以为每种类型算出来,但有没有办法在运行时就能得到这个范围,以确保代码更具可移植性呢?

2 个回答

66

你可以使用 numpy.iinfo(arg).max 来找到整数类型 arg 的最大值,而使用 numpy.finfo(arg).max 来找到浮点数类型 arg 的最大值。

>>> numpy.iinfo(numpy.uint64).min
0
>>> numpy.iinfo(numpy.uint64).max
18446744073709551615L
>>> numpy.finfo(numpy.float64).max
1.7976931348623157e+308
>>> numpy.finfo(numpy.float64).min
-1.7976931348623157e+308

iinfo 只提供 minmax,但是 finfo 还提供一些有用的值,比如 eps(表示大于0的最小数)和 resolution(表示 arg 类型的近似小数精度)。

76

引用自一个关于numpy的讨论列表:

这些信息可以通过 numpy.finfo()numpy.iinfo() 来获取:

In [12]: finfo('d').max
Out[12]: 1.7976931348623157e+308

In [13]: iinfo('i').max
Out[13]: 2147483647

In [14]: iinfo('uint8').max
Out[14]: 255

链接在 这里

撰写回答