如何阻止Numpy将数组中的小数四舍五入为0并保留3位小数
问题原因
你在初始化数组b时使用了全整数的0列表,Numpy会自动将b的dtype设置为整数类型,所有浮点数值存入该数组时都会被强制截断为整数,小于1的正数自然就变成了0,和四舍五入、打印设置都没有关系。
解决方法
- 修改
b的初始化代码,直接指定浮点类型,推荐直接用np.zeros创建目标形状的浮点数组,写法更简洁:
# 替换原有的b初始化代码 b = np.zeros((300, 15), dtype=np.float64)
- 优化建议:不需要写嵌套for循环做逐元素计算,直接利用Numpy的广播特性一行就能完成计算,执行效率高很多:
b = lb + a * intervals
- 如果需要统一保留3位小数,计算完成后调用
np.around即可:
b = np.around(b, 3)
内容的提问来源于stack exchange,提问作者Zayn Shuman
相关产品推荐
相关产品推荐

