2014-03-07 57 views
2

我使用numpy.genfromtxt加載數組。我從數組中提取一個變量並將其保存到另一個.txt文件中,但輸出會有很多尾隨數字。 這裏是我的腳本的例子:使用numpy從數組中提取的變量的精度

import numpy as np 
import csv 

data_points = np.genfromtxt('input_arrray.txt', dtype = None) 
# dtype = None since the array contains numbers and strings  

csvfile = "/home/User/Desktop/output_array.txt" 
with open(csvfile, "w") as output: 
    writer = csv.writer(output, delimiter='\t') 
    for row in range(len(data_points)): 
     parameter = data_points[row][5] 
     writer.writerow([parameter]) 

比方說,在input_array值在output_array.txt0.33625這將是0.33624999999999999

要解決這個問題,我使用:

writer.writerow(['%1.5f' % parameter]) 

但是,我對結果並不滿意。我的原始數組由1900行和38列組成。我想從38中提取10列。但是當我使用'%2.5f% parameter時,我的數據並未對齊。

有沒有解決此問題的另一種方法?

+0

如果您解析你自己的文件,你應該能夠避免這個問題,例如a ='1.225';浮動(a)== 1.225。也許你想知道如何配置numpy.genfromtxt沒有舍入錯誤? –

+0

因爲我沒有收到您的回覆,下面的答案是否正常工作? –

回答

0

您可以強制保留原有的數據字符串:

data_points = np.gengromtxt('input_array.txt', dtype=str) 

,然後編寫使用np.savetxtfmt='%s`` to avoid the conversion字符串 - > float`,導致該輪錯誤:

np.savetxt('output.txt', data_points, fmt='%s')