使用带有预定义分隔符的 numpy 保存逐行 txt
Posted
技术标签:
【中文标题】使用带有预定义分隔符的 numpy 保存逐行 txt【英文标题】:Saving a row-wise txt with numpy with a pre-defined delimiter 【发布时间】:2018-05-09 18:12:42 【问题描述】:假设我有两个numpy
数组x
和y
,我想将它们保存在txt
中,并用制表符作为分隔符(\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
但我想要的是一个逐行的txt
文件,所以我遵循了这个解决方案:
numpy array to a file, np.savetxt
并且使用
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】:逗号在您的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')
【讨论】:
以上是关于使用带有预定义分隔符的 numpy 保存逐行 txt的主要内容,如果未能解决你的问题,请参考以下文章