2016-05-08 16 views
0

np.savetxtを使用して浮動小数点と文字列を含む配列を保存するコードがあります。しかし、私がそれらを保存するとき、彼らは3つの有効数字に保存します。私がzを印刷すると、それは私のフルフロートを与えるので、問題は私がそれを保存するときです。これを引き起こしているのは何ですか?たとえばz[0]=(55798.879999999997, 14.08, 'NAN')のためではなく、私は、ファイルを読んだとき、それは557 14. NANnumpy savetxtは3桁の有効数字にのみ保存する

time=[] 
Um=[] 
Bm=[] 
for j in range(len(h)): 
    ee=np.where(h[j]==U[0]) 
    if len(U[0][ee[0]])!=0: 
     time.append(np.mean(U[0][ee[0]].astype(np.float))) 
     Um.append(np.mean(U[1][ee[0]].astype(np.float))) 
     Bm.append('NAN') 
     #print 'U=',U[0][ee[0]],U[1][ee[0]] 
    gg=np.where(h[j]==B[0]) 
    if len(B[0][gg[0]])!=0: 
     time.append(np.mean(B[0][gg[0]].astype(np.float))) 
     #print 'B=',B[0][gg[0]],B[1][gg[0]] 
     Um.append('NAN') 
     Bm.append(np.mean(B[1][gg[0]].astype(np.float))) 



z=zip(time,U,B) 

np.savetxt('file.txt',z,fmt='%.4s') 
+0

numpy変数のdtypeを指定してください。 – pmaniyan

+0

U.dtype = | S8、B.dtype = | S10 – astrochris

+0

これはnp.savetxtで動作するようにはできませんでしたが、代わりにfile.writeを使用しました。 – astrochris

答えて

0

savetxt言うことfmtをご入力パラメータから導出される

f.write(fmt % tuple(row)) 

のような表現を使用して、あなたのアレイの行の書き込みで行を行います。

In [174]: '%f, %f, %s'%(55798.879999999997, 14.08, 'NAN') 
Out[174]: '55798.880000, 14.080000, NAN' 

In [175]: np.save('file.txt', z, fmt='%f, %f, %s') 

は、フォーマットの詳細についてはsavetxtドキュメントを読んで:あなたの例では、私が代わりにfmtはあなたが買ってあげるフロートのための適切なフォーマットが含まれている場合fmt

In [179]: '%.3s %.3s %.3s'%(55798.879999999997, 14.08, 'NAN') 
Out[179]: '557 14. NAN' 

ようなものを期待します

関連する問題