2017-04-24 6 views
1

savetxtを使用して、 'newresult'というnumpy配列をファイルに保存しています。savetxt使用時に既存のコンテンツに追加する(上書きを避ける)PYTHON

np.savetxt("test.csv", newresult, delimiter=",") 

「newresult」numpyのアレイは、各ループになるよう、ループ内newresult変更の内容です。新しいコンテンツをtest.csvファイルに追加したいと思います。

しかし、私は、既存のコンテンツに追加する一方、各ループで

np.savetxt("test.csv", newresult, delimiter=",") 

は、のtest.CSVの内容を上書きしています。

例えば、

ループ1:

newresult= 
    [[ 1 2 3 ] 
    [ 12 13 14]] 

ループ2

newresult= 
     [[ 4 6 8 ] 
     [ 19 14 15]] 

のtest.CSVコンテンツである:

1, 2 ,3 
    12,13,14 
    4,6,8 
    19,14,15 
+0

http://stackoverflow.com/questions/27786868/python3-numpy-appending-to-a-file-using-numpy-savetxt – cel

答えて

1

最初のポイント:設定できます最初のパラメータはfilループの前に開かれているハンドル。a(追加)フラグ。

第2のポイント:savetxtはファイルをバイナリモードで開きますので、b(バイナリ)フラグを追加する必要があります。

import numpy as np 

with open('test.csv','ab') as f: 
    for i in range(5): 
     newresult = np.random.rand(2, 3) 
     np.savetxt(f, newresult, delimiter=",") 

あなたはfloat型のデータをフォーマットしたい場合は、savetxtfmtパラメータにフォーマット文字列を割り当てることができます。例えば:それは働いた

import numpy as np 

with open('test.csv','ab') as f: 
    for i in range(5): 
     newresult = np.random.rand(2, 3) 
     np.savetxt(f, newresult, delimiter=",", fmt='%.4f') 

enter image description here

+0

、ありがとうございます! – ryh12

関連する問題