np.savetxt格式化 - 如何消除','和'('?

时间:2013-12-30 20:36:08

标签: python numpy

感谢您在我上一期提问中的帮助。

我还有一个问题,实际上是非常基本的问题:

使用下面的代码:

import numpy as np

data = np.loadtxt('coord.xyz',dtype={'names':('id', 'type','x','y','z'),
                                     'formats': ('i4','i4','f4','f4','f4')})

f_h = file('sorted1.dat','a')   
m = sorted(data, key=lambda data_entry: int(data_entry[0]))    
np.savetxt(f_h, m, fmt='%s', delimiter='    ')    
f_h.close()

可以正确排序数据 文件'coord.xyz'并将其保存在'sorted1.dat'文件中。 数据就像这样

  

(1,1,-0.8835089802742004,1.1118659973144531,2.8823349475860596)

     

(2,2,-0.5829229950904846,1.2082430124282837,1.566588044166565)

     

(3,3,-0.4945560097694397,0.02859400026500225,0.7631300091743469)

     

(4,1,-0.7490050196647644,-1.2098779678344727,1.3580570220947266)

     

(5,4,-0.30354899168014526,0.24225300550460815,-0.8102440237998962)

     

(6,1,-1.0057859420776367,-1.2784860134124756,2.719391107559204)

     

(7,5,-1.128898024559021,-0.08812399953603745,3.508042097091675)

     

(8,1,-1.243878960609436,-0.2172279953956604,5.247914791107178)

     

(9,1,-1.3797849416732788,0.1959020048379898,-1.197553038597107)

     

(10,1,-0.25306999683380127,-0.2892940044403076,5.424662113189697)

问题是消除','中的'(' ')''sorted1.dat'

有人可以给我一个简单的解决方案吗?

1 个答案:

答案 0 :(得分:0)

只是不要指定格式,或为每列指定正确的格式。从:

开始
import numpy as np

data = np.loadtxt('coord.xyz', dtype={'names':('id', 'type','x','y','z'),
                                     'formats': ('i4','i4','f4','f4','f4')})
m = data.copy()
m.sort()

with open('sorted1.dat', 'a') as f_h:
    np.savetxt(f_h, m, delimiter='    ')    

要使整数正确显示并使用简单的十进制表示法浮点数,请使用fmt这是一系列格式:

np.savetxt(f_h, m, delimiter='    ', fmt=['%i']*2 + ['%f']*3)