欢迎访问 生活随笔!

生活随笔

当前位置: 首页 > 编程语言 > python >内容正文

python

python怎么使用int四舍五入_使用Python 3的数字格式可以将数字四舍五入到成百上千个...

发布时间:2023/12/31 python 47 豆豆
生活随笔 收集整理的这篇文章主要介绍了 python怎么使用int四舍五入_使用Python 3的数字格式可以将数字四舍五入到成百上千个... 小编觉得挺不错的,现在分享给大家,帮大家做个参考.

具体问题

我正在尝试在seaborn热图中的单元格顶部打印数字.例如,类似:

ax = sns.heatmap(flights, annot=True, fmt=",")

(这直接取自seaborn‘s documentation,将其调整为对Python 3友好.因此,如果您导入seaborn,则可以直接使用相同的示例.)

这样会生成一个相当受人尊敬的数字,如下所示:

但是,我希望看到数字四舍五入到最接近的几百位.换句话说,我希望看到数字171表示为200,315表示为300,依此类推.

主意

在引擎盖下,seaborn实际上只是matplotlib.我可以使用matplotlib的text methods.

matplotlib的文本依赖于Python 3的text formatting,它通过将.2进行四舍五入到第***位***,而具有方便的方法来四舍五入到小数点右边,但是我找不到其他的要四舍五入的东西.方向.

我可以在将数字推送到绘图之前简单地四舍五入,但这实际上会更改绘图数据本身,我宁愿避免.因此,我希望保留传递给绘图的基础数字不变,同时仍然能够很好地打印内容.

据我所知,做到这一点的唯一方法是找到一种格式化事情的聪明方法.有办法吗?

谢谢!

更新资料

我进一步研究了seaborn‘s code,试图理解为什么La Rooy下面的巧妙解决方案对我不起作用.

seaborn代码中的相关行是:

val = ("{:" + self.fmt + "}").format(val)

但是,要使其正常工作,我将需要能够更改我的pandas数据框列,这意味着我需要能够调整nd.array元素的列.

因此,我暂时不再讨论这个问题,并希望一旦事情解决了,我将能够采用La Rooy的解决方案,并且事情应该可以进行.

一旦发生这种情况,解决方案将是:

>>> class rndarray(np.ndarray):

... def __format__(self, spec):

... return np.ndarray.__format__(int(round(self, -2)), spec)

...

>>> df[''] = map(rndarray, df['

或者,如果那不起作用,则:

>>> df[''].values = map(rndarray, df['

总结

以上是生活随笔为你收集整理的python怎么使用int四舍五入_使用Python 3的数字格式可以将数字四舍五入到成百上千个...的全部内容,希望文章能够帮你解决所遇到的问题。

如果觉得生活随笔网站内容还不错,欢迎将生活随笔推荐给好友。