拥有这样的结构化数组:
[ (b'H', 0.9425, 0.1412, 7.1414) ... (b'N', 1.0037, 4.0524, 6.8000)]
我想使用.txt file
创建一个numpy.savetxt
,其中数组的每个元素都写在不同的行中:
H 0.9425 0.1412 7.1414
N 1.0037 4.0524 6.8000
我设置了newline='\n'
,但它没有正常工作,所有元素都是用单行写的。与 标题 参数相同的问题,指定的标题也会打印在同一行。
现在看起来像这样:
29Shifts: 1.0 3.0 7.0b'C' 1.0029 3.5098 7.9883 b'N' 1.0039 4.0586 6.8008
29Shifts: 1.0 4.0 0.0b'C' 1.0029 4.5078 0.9873 b'N' 1.0039 5.0586 -0.2000
29Shifts: 1.0 5.0 9.0b'C' 1.0029 5.5078 9.9844 b'N' 1.0039 6.0586 8.7969
以下是使用的参数:
np.savetxt(outfile, recarray, fmt=[b'%s','%-7.4f','%-7.4f','%-7.4f'], delimiter=' ', newline='\n', header='29\nShifts: 1.0 1.0 3.5\n', comments='')
谢谢
答案 0 :(得分:1)
我想知道您系统上的\n
是否存在问题;也许Python使用一个值,而你的文件查看器期待另一个(有dos,linux和mac标准)。
我对linux机器上的Ipython会话中的数据和格式没有任何问题。
In [88]: d=[ (b'H', 0.9425, 0.1412, 7.1414),(b'N', 1.0037, 4.0524, 6.8000)]
In [89]: data=np.array(d,'|S1,f,f,f')
In [90]: data
Out[90]:
array([(b'H', 0.9424999952316284, 0.1412000060081482, 7.14139986038208),
(b'N', 1.0037000179290771, 4.0524001121521, 6.800000190734863)],
dtype=[('f0', 'S1'), ('f1', '<f4'), ('f2', '<f4'), ('f3', '<f4')])
In [91]: np.savetxt('test.txt', data,fmt =[b'%s','%-7.4f','%-7.4f','%-7.4f'])
In [92]: cat test.txt
b'H' 0.9425 0.1412 7.1414
b'N' 1.0037 4.0524 6.8000
In [93]np.savetxt('test.txt', data,fmt=[b'%s','%-7.4f','%-7.4f','%-7.4f'],
delimiter=' ', newline='\n', header='29\nShifts: 1.0 1.0 3.5\n', comments ='')
In [94]: cat test.txt
29
Shifts: 1.0 1.0 3.5
b'H' 0.9425 0.1412 7.1414
b'N' 1.0037 4.0524 6.8000