【发布时间】:2010-12-12 03:17:29
【问题描述】:
我有兴趣查找特定 Numpy 类型(例如 np.int64、np.uint32、np.float32 等)所有可能的有效值的范围是什么(例如 np.int32 最多可以存储数字2**31-1)。当然,我想理论上每个类型都可以解决这个问题,但是有没有办法在运行时做到这一点,以确保代码更便携?
【问题讨论】:
我有兴趣查找特定 Numpy 类型(例如 np.int64、np.uint32、np.float32 等)所有可能的有效值的范围是什么(例如 np.int32 最多可以存储数字2**31-1)。当然,我想理论上每个类型都可以解决这个问题,但是有没有办法在运行时做到这一点,以确保代码更便携?
【问题讨论】:
引用一个 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
链接here。
【讨论】:
您可以使用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)。
【讨论】: