2012-08-10 138 views
2

我有一個非常簡單的問題。我有花車如何將浮點數組格式化爲字符串

數組
a = array([0.01,0.1,10,100,1000]) 

我想,這樣最終的結果看起來像

10$^-2$, 10$^-1$, .... 

打印此數組是可能與%命令?

+0

你或許應該指定程序的行爲'1',以及爲浮動不屬於的10 – ninjagecko 2012-08-10 08:56:32

回答

2

作爲一襯墊:

["10$^{}$".format(int(math.log10(num))) for num in a] 

或更清楚:

from math import * 

def toLatex(powerOf10): 
    exponent = int(log10(powerOf10)) 
    return "10$^{}$".format(exponent) 

nums = [10**-20, 0.01, 0.1, 1, 10, 100, 1000, 10**20] 
[(x, toLatex(x)) for x in nums] 

 

[(1e-20, '10$^-20$'), 
(0.01, '10$^-2$'), 
(0.1, '10$^-1$'), 
(1, '10$^0$'), 
(10, '10$^1$'), 
(100, '10$^2$'), 
(1000, '10$^3$'), 
(100000000000000000000L, '10$^20$')] 
1

試試這個:

for i in str(a): 
    print i 

輸出:

0.01 
0.1 
10.0 
100.0 
1000.0 

如果你喜歡科學記數法:

for i in str(a): 
    print '%.3e' % i 

輸出:

1.000e-02 
1.000e-01 
1.000e+01 
1.000e+02 
1.000e+03 

'%.3e'中的數字控制小數點右側的位數。

編輯:如果您想要在同一行上打印所有內容,請在每個打印語句的末尾添加一個逗號','。

+0

權力,然後你可以用「$ ^」代替「E」使用字符串替代。 – 2012-08-10 08:40:32

+0

謝謝你的回答,但我的問題可能不清楚。我想我的科學記數法字符串,但像乳膠格式10 $^{ - 2} $等 – Brian 2012-08-10 08:40:59

+0

@NoxHarmonium:ValueError:不支持的格式字符'$' – Brian 2012-08-10 08:41:55

4
a = [0.01,0.1,10,100,1000] 
for x in a: 
    base,exp = "{0:.0e}".format(x).split('e') 
    print "{0}0$^{1}$".format(base,exp) 

輸出:

10$^-02$ 
10$^-01$ 
10$^+01$ 
10$^+02$ 
10$^+03$ 
+0

對於'1',這是'10 $^+ 00 $',但由於OP沒有指定行爲,這看起來很好。可能不適用於非10輸入,但OP沒有指定這種行爲。也許有一個很小的機會,四捨五入錯誤可能會搞砸了,可能用'{.0e}'?但我無法觸發它。 – ninjagecko 2012-08-10 08:55:25

+0

我個人會寫它'base,exp =「{0:.0e}」。format(x).split('e')',然後'print「{0} 0 $^{1} $」。 format(base,exp)' – ninjagecko 2012-08-10 08:58:36

+0

這也可能不是OP所要求的,因爲它預先設置爲0,而LaTeX可能會將其渲染爲10 -02 ninjagecko 2012-08-10 09:05:56

2

轉換數科學記數法的字符串:

s = string.format("%.3e",0.001) 

然後更換E +或膠乳格式E-:

s.replace("e+","$^{") 
s.replace("e-","$^{") 

然後附加膠乳端部托架:

s = s + "}$" 

應該輸出:

"1.000$^{-3}$" 
相關問題