我们说我有两个numpy
数组x
和y
,我想将它们保存在txt
中,并使用制表符作为分隔符({ {1}})及其相应的类型(\t
是x
而float
是y
)和某种格式。例如:
integer
如果我只使用import numpy as np
x=np.random.uniform(0.1,10.,4)
y=np.random.randint(10,size=4)
,这就是我得到的:
np.savetxt('name.txt',(x,y))
但我想要的是一个行6.111548206503401026e+00 4.208270401300298058e-01 5.914485954766230957e-01 6.652272388676337966e-01
6.027109785846696433e+00 1.024051075089774443e+01 3.358386699980072621e+01 7.652668778594046151e-01
文件,所以我遵循这个解决方案:
numpy array to a file, np.savetxt
并且使用
txt
我明白了:
np.savetxt('name.txt',np.vstack((x,y)).T,delimiter='\t')
直到这里它没关系,但正如我所提到的,我希望输出具有适当的数据类型和一些格式,所以我尝试2.640596763338360020e+00 4.000000000000000000e+00
8.693117057064670306e+00 4.000000000000000000e+00
3.891035166453641558e+00 6.000000000000000000e+00
9.044178202861068883e+00 2.000000000000000000e+00
,我得到的是:
np.savetxt('name.txt',np.vstack((x,y)).T,fmt=('%7.2f,%5i'),delimiter='\
...: t')
具有适当的格式和数据类型,但在列之后添加 2.64, 4
8.69, 4
3.89, 6
9.04, 2
。有谁知道如何摆脱列后的,
打印?
答案 0 :(得分:2)
逗号位于fmt
字符串中。将其替换为fmt='%7.2f %5i'
,如下所示:
np.savetxt('name.txt',np.vstack((x,y)).T,fmt='%7.2f %5i')
请注意,不需要制表符分隔符(delimiter='\t'
),因为np.vstack((x,y)).T
只填充一列。如果要在值之间使用制表符,请将格式字符串更改为fmt='%7.2f \t%5i'
或者:
np.savetxt('name.txt',np.vstack((x,y)).T,fmt=('%7.2f', '%5i'), delimiter='\t')