我正在求解一个微分方程,并将每个时间步的结果坐标,速度和加速度存储在一个numpy数组中。最后,我将数组重新整形为一个包含七列(t,x,vx,ax,y,vy,ay)的矩阵。然后,我想使用numpy的savetxt函数将矩阵保存到文本文件中,使用制表符分隔的列和以单独行写的行。我使用的代码如下:
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
等等。基于question我尝试修改这样的savetxt参数:
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
等等。我该怎么做才能得到一个如下所示的文件:
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
答案 0 :(得分:1)
你的第一个解决方案应该这样做,只是你犯了一个商城错误。结果的reshape
不是就地操作。 res
是一个数组,在重新整形后,您必须将其分配给变量。
res = res.reshape(n+1,7)
否则,您应该可以
np.savetxt('result.txt', res.reshape(n+1,7), delimiter='\t', newline='\r\n')
此外,您可以使用reshape(-1,7)
进行更好的重塑,它会创建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