You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Numpy切片赋值归一化后数组数值与预期不一致问题求助

错误原因

  • 数组类型隐式截断问题:你初始化scaled时是直接从img拷贝生成,图片数组默认多为uint8类型(取值范围0~255),因此scaled初始dtype也会继承为uint8。对切片赋值时,右侧除以255得到的是浮点结果,但是赋值给uint8类型的数组时,NumPy会自动将浮点值截断取整为整数,数值已经发生失真。而test是拷贝数组后直接整体除以255,运算过程中数组会自动提升为浮点类型,不会发生截断,二者数值必然存在差异。
  • 浮点数相等比较的精度问题:即便你提前将scaled转换为浮点型避免了截断,直接用==对比浮点运算结果也很容易因为计算精度误差返回False,这类数值对比场景应该使用np.allclose()做近似相等判断。

修正示例代码

# 提前将scaled转换为浮点型,避免赋值截断
scaled = np.array(img, copy=True).astype(np.float32)                                                            
test = np.array(img, copy=True) / 255                                                                                                                                                                   
scaled[:, :, :, :3] = scaled[:, :, :, :3] / 255.0                                                                                                          
print(np.allclose(scaled, test)) # 此时将返回True

内容的提问来源于stack exchange,提问作者taDachs

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.26 09:24:00