2011-08-13 121 views
3
import numpy as np 

f1= "test_io.csv" 
f2= "test_io2.csv" 

array = np.genfromtxt(f1,delimiter=',',missing_values='NA', filling_values=1.e20) 
np.savetxt(f2,array,delimiter=',') 

#np.savetxt(f2,array,delimiter=', missing_values = 1.e20, filling_values='NA') 

如所建議的通過第二「savetxt」,我想能夠替換缺少通過genfromtxt通過填充值讀入和替換值,其中「NA」當寫一個文件。我能找到的最好方法是將數組中的每一行轉換爲一個str數組,並替換「缺少的值」,然後用csv編寫器寫入每一行。有沒有更好的辦法?寫作「缺失數組值」到文件

回答

1

沒有內置的方法可以做到這一點,因爲通常情況下更容易推出自己的產品,而不是讓一個「通用型」功能滿足您的需求。

就你而言,我不會打擾csv模塊。當你需要閱讀複雜的數據時,這很好,但對於這樣簡單的事情來說,不使用它就容易得多。

missing, fill = 1.e20, "NA" 
with open("test_io2.csv", 'w') as outfile: 
    for row in array: 
     line = ','.join([str(x) for x in row if x != missing else fill]) 
     outfile.write(line + '\n') 

當然,關於測試浮點數相等性的常見警告也適用。代替if x < 9e19 else fill這樣做可能更有意義。不過,這取決於你的特定應用。