2013-10-20 65 views
1

我無法格式化numpy的陣列與savetxt保存時:如何在savetxt中舍入numpy值?

from numpy import * 

a = loadtxt('frequenz.txt') 
b = sum(a[0:10,1:4], 1)/3-20741 
savetxt('solution.txt', b, fmt='%.2f', delimiter='\t', header='average') 

沒有顯示錯誤:

fh.write(asbytes(format % tuple(row) + newline)) 
UnboundLocalError: local variable 'format' referenced before assignment 

當保存的值,而不FMT它的工作原理,但我只想有2位小數:

from numpy import * 

a = loadtxt('frequenz.txt') 
b = sum(a[0:10,1:4], 1)/3-20741 
savetxt('solution.txt', b, delimiter='\t', header='average') 

solution.txt:

# average 
3.666666666667879326e+00 
6.666666666667879326e+00 
9.333333333332120674e+00 
1.300000000000000000e+01 
1.533333333333212067e+01 
1.833333333333212067e+01 
2.133333333333212067e+01 
2.466666666666787933e+01 
2.766666666666787933e+01 
3.066666666666787933e+01 

frequenz.txt:

#0 20741 20741 20741 
6 20745 20745 20744 20739 20739 20738 
12 20748 20747 20748 20736 20736 20736 
18 20750 20751 20750 20732 20733 20732 
24 20754 20754 20754 20730 20730 20730 
30 20756 20756 20757 20727 20727 20726 
36 20760 20759 20759 20723 20723 20724 
42 20762 20762 20763 20721 20721 20720 
48 20766 20766 20765 20718 20718 20718 
54 20768 20769 20769 20715 20715 20714 
60 20771 20772 20772 20712 20712 20712 

謝謝您的幫助! Martin

+1

你使用的是什麼版本的numpy和python?我經常使用numpy,大部分時間我使用'np.savetxt'指定格式,我不記得那樣的錯誤 –

+0

您的代碼適用於我使用numpy 1.7.1。 –

+0

python版本:2.7.5,numpy版本:1.7.1 – marsch

回答

1

我的解決方案:我總是在編輯器BBEdit中輸入python代碼,然後在終端中運行它。這不起作用,並提供一個錯誤。直接輸入終端工作正常。我的一個python文件的默認頭

from __future__ import (print_function, division, unicode_literals, absolute_import) 

錯誤是由

unicode_literals 

造成也許它幫助別人。問候。