如何获取有效Numpy数据类型的范围?
我想知道某种特定的Numpy数据类型(比如 np.int64
、np.uint32
、np.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
只提供 min
和 max
,但是 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
链接在 这里。