簡體   English   中英

是否有一個python模塊將值和錯誤轉換為科學記數法?

[英]Is there a python module that convert a value and an error to a scientific notation?

假設我有兩個數字, v = 0.01342err = 0.0004 在科學記數法下,這將被寫為(13.4 ± 0.4)e-3 是否有一個功能可以進行轉換(可能是scipy)? 當然,重要的是數字而不是±符號。 在網上搜索,我了解到有(是?)函數(s?)吃了一個數字來轉換和一些所需的數字,他們吐出結果。 這不是我正在尋找的。 我寫了一次,但結果卻很難看。

我不明白你最后幾行的意思,但是當你有像你這樣的特定輸出時,你通常必須自己寫。

def sci_not(v,err,rnd=1):
    power = - int(('%E' % v)[-3:])+1
    return '({0} +/- {1})e{2}'.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})e{2}'.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

我不知道這是否正是您正在尋找的,但您可以使用.format以科學記數法顯示數字

v = 0.01342
err = 0.0004

print ('({:.2e}'.format(float(v)) + ' +/- ' + '{:.2e}'.format(float(err)) + ')')

將輸出以下內容:

(1.34e-02 +/- 4.00e-04)

{。。2e}的.2指定精度,這可以防止任何過於丑陋的數字

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM