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

Posted

技术标签:

【中文标题】使用带有预定义分隔符的 numpy 保存逐行 txt【英文标题】:Saving a row-wise txt with numpy with a pre-defined delimiter 【发布时间】:2018-05-09 18:12:42 【问题描述】:

假设我有两个numpy 数组xy,我想将它们保存在txt 中,并用制表符作为分隔符(\t),它们的适当类型(xfloatyinteger) 和某种格式。例如:

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的主要内容,如果未能解决你的问题,请参考以下文章

使用带有标题的 np.savetxt 保存结构化的 numpy 数组

使用 Numpy 进行逐行缩放

AWK

awk

Numpy—— 保存和导入文件

awk的基本用法