根据Matlab的帮助,single
值通过舍入转换为uint8
,例如。
uint8(91.799999)
将返回我们92。
然而,numpy以下
np.uint8(91.799999)
将返回91。
有没有办法以这种或那种方式匹配这些行为?
由于
答案 0 :(得分:2)
有两件事你必须注意:np.round与MATLAB中使用的不同舍入模式以及MATLAB转换也会剪切到范围[0,255],因为numpy溢出/下溢。让Numpy在MATLAB中模仿uint8强制转换:
np.uint8(np.clip(91.799999+0.5,0,255))
答案 1 :(得分:0)
Documentation精确地描述了如何转换为整数:
如果转换为整数的数字具有小数部分,则MATLAB将舍入为最接近的整数。如果小数部分恰好是0.5,那么从两个同样接近的整数中,MATLAB选择绝对值大小的那个
通过这个描述,你可以很容易地模仿python中的行为。