所以我一直创造numpy的阵列那样:当我为给定的dtype设置的值太大时会发生什么?
>>> u = np.zeros(10, int)
>>> v = np.zeros(10, float)
我一直无视有关最大允许值,直到如今。我一直认为它会简单地工作。如果没有,我会得到OverflowError
,然后我会找到一些解决方法,如采取对数。
但最近我开始使用其他dtypes:
>>> v8 = np.zeros(10, np.uint8)
>>> v8[0] = 2 ** 8 - 1
>>> v8[1] = 2 ** 8
>>> v8
>>> array([255, 0, 0, 0, 0, 0, 0, 0, 0, 0], dtype=uint8)
好了,所以当我分配比255这是一个有点吓人更大的价值我没有得到任何警告。
所以我的问题是:
- 当我使用类型
int
和float
阵列,是有可能,我设置的值过大(导致完全错误的计算)不知道呢? - 如果我想使用
uint8
,我必须手动检查所有分配的值是否在[ 0, 255 ]
?