使用带有预定义分隔符的numpy保存行方式txt

时间:2018-05-09 18:12:42

标签: python arrays numpy

我们说我有两个numpy数组xy,我想将它们保存在txt中,并使用制表符作为分隔符({ {1}})及其相应的类型(\txfloaty)和某种格式。例如:

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 。有谁知道如何摆脱列后的,打印?

1 个答案:

答案 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')