如何修改二维numpy数组中的指定子数组?赋值失败问题求解
问题根因
你的pontos数组初始化时被设置为整数类型(int),numpy对整数类型数组赋值浮点数时,会自动截断小数部分取整。你计算得到的novoP实际值为[0. 0. 0.33333333],赋值到int类型的pontos[i]时,0.33333333被截断为0,最终输出全0结果。
解决方案
- 方法1:创建
pontos时显式指定浮点类型
若你需要保留小数精度,初始化数组时指定dtype为浮点类型即可,示例:# 8行3列的浮点型数组,根据需求选np.float32或np.float64 pontos = np.zeros((8, 3), dtype=np.float64) - 方法2:已创建的数组可先转换类型再赋值
如果pontos已经初始化完成,先做类型转换再执行赋值操作:# 转换为浮点类型,必须赋值回原变量才会生效 pontos = pontos.astype(np.float64) # 再执行赋值 pontos[i] = novoP - 快速验证:你可以在赋值前添加一行
print(pontos.dtype),如果输出为int32/int64就符合上述问题场景,修改类型后即可正常赋值。
内容的提问来源于stack exchange,提问作者Leib Neubarth
相关产品推荐
相关产品推荐

