是否有将值和错误转换为科学计数法的 python 模块?
Posted
技术标签:
【中文标题】是否有将值和错误转换为科学计数法的 python 模块?【英文标题】:Is there a python module that convert a value and an error to a scientific notation? 【发布时间】:2013-06-13 13:36:46 【问题描述】:假设我有两个数字,v = 0.01342
和 err = 0.0004
。在科学记数法下,这将被写为(13.4 ± 0.4)e-3
。是否有进行该转换的功能(可能在 scipy 上)?自然,重要的是数字而不是±
符号。在网上搜索,我了解到有(是?)函数(s?)它吃一个数字来转换和一些想要的数字,然后他们吐出结果。这不是我要寻找的。我写过一次,但结果很丑。
【问题讨论】:
【参考方案1】:我不明白你最后几行的意思,但是当你有像你这样的特定输出时,你通常必须自己写。
def sci_not(v,err,rnd=1):
power = - int(('%E' % v)[-3:])+1
return '(0 +/- 1)e2'.format(
round(v*10**power,rnd),round(err*10**power,rnd),power)
这就是诀窍
>>> v = .01342
>>> err = .0004
>>> sci_not(v,err)
(13.4 +/- 0.4)e3
编辑:如果您将字符串设为 unicode,则可以输入 ± 字符,但只有在使用打印语句时结果才会看起来很漂亮。
将之前的return语句替换为
return u'(0 \u00B1 1)e2'.format(
round(v*10**power,rnd),round(err*10**power,rnd),power)
返回
>>> sci_not(v,err)
u'(13.4 \xb1 0.4)e3'
>>> print sci_not(v,err)
(13.4 ± 0.4)e3
【讨论】:
没那么简单。如果错误值以 1 开头,则err
将四舍五入为两位数。在对 err 进行四舍五入后,就知道要舍入多少位数。如果我有 v = 235.3654,并且 err= 0.143,从 sci_not
我得到 (23.5 +/- 0.0)e-1 而不是 (23.537 +/- 1.4)e1。变量pov
应该从err
估计,加上其余代码需要相应地更正。【参考方案2】:
我不知道这是否正是您要查找的内容,但您可以使用 .format 以科学计数法显示数字
v = 0.01342
err = 0.0004
print ('(:.2e'.format(float(v)) + ' +/- ' + ':.2e'.format(float(err)) + ')')
将输出以下内容:
(1.34e-02 +/- 4.00e-04)
:.2e 的 .2 指定精度,防止任何过于丑陋的数字
【讨论】:
目标是通过函数计算:.2e
中的2
。我需要做大约 80 项。以上是关于是否有将值和错误转换为科学计数法的 python 模块?的主要内容,如果未能解决你的问题,请参考以下文章