2

とても簡単な質問があります。フロートの配列があります

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

最終結果が次のようになるように、この配列を印刷したいと思います

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

%コマンドでそれは可能ですか?

4

4 に答える 4

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$
于 2012-08-10T08:50:39.120 に答える
2

数値を科学的記数法の文字列に変換します。

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

次に、e+またはe-をラテックス形式に置き換えます。

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

次に、ラテックスエンドブラケットを追加します。

s = s + "}$"

出力する必要があります:

"1.000$^{-3}$"
于 2012-08-10T08:51:48.340 に答える
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$')]
于 2012-08-10T09:01:27.430 に答える
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'の桁は、小数点の右側の桁数を制御します。

編集:すべてを同じ行に印刷する場合は、各印刷ステートメントの最後にコンマ「、」を追加します。

于 2012-08-10T08:39:02.967 に答える