क्या आप वाकई तो दशमलव बिंदु के बाद स्थानों की एक निश्चित संख्या की तुलना में अधिक की जरूरत नहीं है, कर रहे हैं:
>>> from numpy import r_
>>> a = r_[10**(-9), 10**(-3), 3*10**(-3), 6*10**(-3), 9*10**(-3), 1.5*10**(-2)]
>>> for x in a: print "%.1e"%x
...
1.0e-09
1.0e-03
3.0e-03
6.0e-03
9.0e-03
1.5e-02
यहाँ पकड़ पिछले एक प्रारूप के रूप में %.0e
उपयोग करने के लिए, आप थे कि है संख्या के रूप में 1e-2
संपादित मुद्रित किया जाएगा: चूंकि आप matplotlib
उपयोग कर रहे हैं, तो यह एक अलग कहानी है: आप टेक्स प्रतिपादन इंजन इस्तेमाल कर सकते हैं। एक त्वरित और गंदा उदाहरण:
fig = plt.figure()
ax = fig.add_subplot(111)
x = 1.5*10**(-2)
l = ("%.0e"%x).split("e")
x_str = r"$ %s \times 10^{%s}$" % (l[0], l[1])
ax.set_title(x_str)
plt.show()
वास्तव में नई .format
स्ट्रिंग स्वरूपण के साथ एक छोटे से क्लीनर होगा जो।
EDIT2: बस पूर्णता और भविष्य में संदर्भ के लिए, यहाँ टिप्पणी से ओपी के रास्ते पर मेरी ले रहा है:
x = 1.5*10**(-2)
l = ("%.0e"%x).split("e")
x_str = r"$%s \times 10^{%s}$" % (l[0], str(int(l[1])))
यहाँ मैं किसी पूर्णांक पर परिवर्तित कर रहा हूँ और वापस अग्रणी शून्य से बचने के लिए: -02
- >-2
आदि
स्रोत
2013-02-22 09:16:41
आप str.format को भी आजमा सकते हैं - http://docs.python.org/2/library/string.html#formatstrings – dmg
आप साजिश कैसे बना रहे हैं? क्या यह सिर्फ कुछ ASCII-art-like plot है या आप 'matplotlib' या अन्य पुस्तकालयों का उपयोग कर रहे हैं? – Bakuriu
'% s 10^(% s) '% (संख्या 1, संख्या 2)' काम करता है? – dmg