2013-02-06 19 views
1

我是一個初學者在python,輕鬆地獲得stucked和困惑......蟒蛇改變格式的數字ndarray的數位

當我看到其中包含與數字號碼錶的文件時,它讀取它作爲numpy的.ndarray

Python正在改變數字的顯示。 例如: 在輸入文件我有這個數:56143.0254154 和輸出文件的數量寫爲:5.61430254e + 04

,但我想保持第一格式輸出文件。 我試圖使用string.format或locale.format函數,但它不起作用

任何人都可以幫助我做到這一點?

謝謝! Ruxy

+1

您能否給出更多的上下文?你如何寫文件? –

回答

1

嘗試numpy.set_printoptions() - 在那裏你可以例如指定打印的位數並取消科學記數法。例如,numpy.set_printoptions(precision=8,suppress=True)將打印8位數字並且不顯示「... e + xx」。

+0

通過'np.savetxt()'保存數組時執行此操作。謝謝! – ryanjdillon

+0

經過測試,看起來沒有。仍然需要通過'np.savetxt(...,fmt ='%f')'等格式設置格式。有關格式化的信息可以[在這裏找到](http://docs.scipy.org/doc/ numpy的/參照/生成/ numpy.savetxt.html)。 – ryanjdillon

0

您必須創建一個格式化的字符串。假設變量數包含您想要打印的號碼,在Python 2.7或3,你可以在Python 2使用

print("{:20.7f}".format(number)) 

而:

print "%20.7f" % number 

另外,如果您使用numpy的程序寫出來的數組,請使用Warren建議的方法。

1

如果要打印一個numpy數組,可以使用set_printoptions函數控制不同數據類型的格式。例如:

In [39]: a = array([56143.0254154, 1.234, 0.]) 

In [40]: print(a) 
[ 5.61430254e+04 1.23400000e+00 1.23450000e-02] 

In [41]: set_printoptions(formatter=dict(float=lambda t: "%14.7f" % t)) 

In [42]: print(a) 
[ 56143.0254154  1.2340000  0.]