为什么在进行标量减法时,当涉及一个np.uint8类型的整数时,NumPy会发出溢出警告,但当同样的值作为一个0 维数组的一部分时却不会警告?
这两行:
res0 = np.array(np.uint8(40))-80 # np.uint8(216), no warning
res1 = np.uint8(40)-80 # np.uint8(216), warning
似乎工作方式完全相同。两者 res0 与 res1 都将是 np.uint8(216)。np.equal(res0,res1) 将返回 np.True_。
然而,只有第二行会产生这个警告:
RuntimeWarning: overflow encountered in scalar subtract
res1 = np.uint8(40)-80 # np.uint8(216)
看起来这个警告对第一行也会同样相关。
为什么只有第二行会触发这个警告?
解决方案
The documentation says:
请注意,当溢出发生在标量上时,NumPy会发出警告,但对数组不会;例如,
np.array(100, dtype="uint8") + 100将不会发出警告。
这并不能解释为什么会这样,如问题中所问,但它表明根据文档,观察到的行为是符合预期的。
站内所有文章版权归属LeftHeroAI导航站,无授权禁止任何主体转载、抄袭、复制内容,亦不得私自架设镜像站点。一经侵权,本站将通过法律途径追责。