2017-10-23 9 views
0

私は微分方程式を解いて、各時間ステップの結果座標、速度、加速度をnumpy配列に格納しています。最後に、配列を7列(t、x、vx、ax、y、vy、ay)の行列に作り直します。次に、numpyのsavetxt関数、タブで区切られた列、および別々の行で書かれた行を使用して、テキストファイルに行列を保存します。私が使用するコードは以下の通りです:上のnumpy.savetxtは区切り文字と改行パラメータを認識しません

0.0000e+00 
5.0000e-01 
0.0000e+00 
-1.0000e+00 
0.0000e+00 
1.6300e+00 
0.0000e+00 
0.0000e+00 
4.9583e-01 
-8.3167e-02 
-9.9167e-01 

ので:私はここから入手

res.reshape(n+1, 7) 
np.savetxt('result.txt', res, delimiter='\t', newline='\r\n') 

何行列のすべてのメンバーがそうのような別の行に印刷されていることです。

0.0000e+00 5.0000e-01 0.0000e+00 -1.0000e+00 0.0000e+00 1.6300e+00 0.0000e+00 0.0000e+00 4.9583e-01 -8.3167e-02 -9.9167e-01 

ので:

np.savetxt('result.txt', [res], delimiter='\t', newline='\r\n') 

結果が今のメンバーは、タブで区切られていますが、すべてが1行で記述されていることである。私はこのようなsavetxt引数を変更しようとしたquestionに基づいて、に。私はこのようなファイルを取得するために何をすべき:

0.0000e+00 5.0000e-01 0.0000e+00 -1.0000e+00 0.0000e+00 1.6300e+00 0.0000e+00 
0.0000e+00 4.9583e-01 -8.3167e-02 -9.9167e-01 1.3556e-01 1.6164e+00 -2.7112e-01 
1.0000e-01 4.7953e-01 -1.7773e-01 -9.3289e-01 2.9409e-01 1.5640e+00 -5.7213e-01 

答えて

1

あなたの最初のソリューションは、それを行う必要がありますが、あなたはモールのミスを犯します。あなたの結果のreshapeは、インプレイスオペレーションではありません。 resは配列であり、あなたが再形成した後、それを変数に代入する必要があります。

res = res.reshape(n+1,7)

そうでない場合、あなたはまた、

np.savetxt('result.txt', res.reshape(n+1,7), delimiter='\t', newline='\r\n')

を行うことができる必要があり、あなたはそれが7列を作成しますreshape(-1,7)を使用してよりよい整形を行うことができますし、それは調整します必要な行の量

あなたはまた、ファイルにヘッダ行を追加することができます

header = ('t', 'x', 'vx', 'ax', 'y', 'vy', 'ay') 
np.savetxt('result.txt', res.reshape(n+1,7), delimiter='\t', newline='\r\n', header=header 
(非常にそれをお勧めします)
関連する問題