咨询Numpy中uint8类型转换的截断规则:423转167的计算逻辑
Numpy中numpy.uint8对超出范围值的转换规则
当你将大于等于256(或小于0)的数值转换为numpy.uint8类型时,Numpy会采用对256取模的计算方式,公式可表示为:
转换后的值 = 输入值 % 256
验证你的例子
你的代码:
import numpy a = 423 b = numpy.uint8(a) print(b)
计算过程:423除以256,商为1,余数是 423 - 256*1 = 167,和运行结果完全一致。
你之前用423减255得到168,差异的原因是混淆了取值范围上限(255)和模运算的基数(256)——uint8的取值范围是0到255,共256个可能的数值,所以模运算的基数是256,而非255。
如果输入是负数,同样遵循这个规则,比如numpy.uint8(-1)会得到255,因为-1 % 256 = 255。
内容的提问来源于stack exchange,提问作者jirikadlec2
相关产品推荐
相关产品推荐

