NumPy数据类型的最大允许值是多少?

104

我正在使用numpy数组,并且涉及到多种数据类型(uint8、uint16、int16等)。我想要检查一个数字是否可以在给定数据类型的数组限制范围内表示。我想象中的解决方法大致如下:

>>> im.dtype
dtype('uint16')
>>> dtype_max(im.dtype)
65535
>>> dtype_min(im.dtype)
0

有类似的东西吗?顺便说一下,我觉得这个问题以前肯定被问过,但我的搜索结果为空,并且所有的“类似问题”似乎都不相关。

编辑:当然,现在我已经问了,其中一个“相关”的问题确实有答案。糟糕。

2个回答

153
min_value = np.iinfo(im.dtype).min
max_value = np.iinfo(im.dtype).max

文档:

  • np.iinfo(整数类型的机器极限)
  • np.finfo(浮点数类型的机器极限)

谢谢您指出这个问题。为了与我的问题保持一致,iinfo中的参数应该是im.dtype,而不是im。 - jdmcbr
3
有没有一种简单的方法来做到这一点,而不需要知道类型是浮点数还是整数(因此必须在iinfo和finfo之间选择)?目前我正在使用try/catch,但有点麻烦。 - gdelab
1
@gdelab 除了使用try/catch,你还可以使用issubclass(dtype, np.integer)issubclass(dtype, np.floating)来进行分支选择,然后选择np.iinfo或者np.finfo - leon-w

22

如果你想获得整数类型的信息,可以使用numpy.iinfo函数。详情请看这里

如果你需要浮点类型的信息,可以使用numpy.finfo函数。详情请看这里


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接