2011-08-13 20 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') 

2番目の「savetxt」で示唆されているように、genfromtxtで読み込まれた値が「NA」で置き換えられ、ファイルを書くときに。私が見つけることができる最良の方法は、配列の各行をstrの配列に変換し、 "欠損値"を置き換え、各行にcsvライターを書き込むことです。より良い方法がありますか?ファイルに「欠損した配列値」を書き込む

答えて

1

"one-size-fits-all"機能を自分のニーズに合わせるのではなく、自分のロールするのが通常簡単なので、組み込みの方法はありません。

あなたの場合、私は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のようなことを行う方が意味があるかもしれません。しかし、それはあなたの特定のアプリケーションに依存します。

関連する問題