我想将np.double
写入格式化文件:
import numpy as np
a='12 45 87 34 65';
s=np.double(a.split())
fid=open('qqq.txt','wt')
fid.write('%5.1f %5.1f %5.1f %5.1f %5.1f ' %(s[0],s[1],s[2],s[3],s[4]))
fid.close()
这个“写”行可以用更短的方式写出来吗?
fid.write('%5.1f %5.1f %5.1f %5.1f %5.1f ' %(s[0],s[1],s[2],s[3],s[4]))
答案 0 :(得分:6)
一种方法是
In [48]: ''.join('%5.1f ' % n for n in s)
Out[48]: ' 12.0 45.0 87.0 34.0 65.0 '
另一种方式是
In [49]: ('%5.1f ' * len(s)) % tuple(s)
Out[49]: ' 12.0 45.0 87.0 34.0 65.0 '
答案 1 :(得分:1)
fid.write(''.join(map('{:5.1f} '.format, s)))
答案 2 :(得分:0)
这是最快的方式:
fid.write(''.join(map(lambda x: '%5.1f'%x , s.tolist())))
值得注意的是,通过这样做可以更快地实现读取值的方法:
>>> import numpy as np
>>> a = '12 45 87 34 65'
>>> np.fromstring(a, sep=' ')
array([ 12., 45., 87., 34., 65.])
答案 3 :(得分:0)
如何使用列表推导首先将双精度转换为字符串,然后创建输出行。
例如:
double_strs = ["%5.1f" % number for number in s]
fid.write( " ".join(double_strs) )
答案 4 :(得分:0)
快速简单,我的朋友:
fid.write('%5.1f ' * len(s) % tuple(s))
答案 5 :(得分:0)
我能想到的最短的是:
"%5.1f"*len(s)%s