2011-03-17 97 views
10

我一直在尝试使用savetxt功能numpy的。我遇到的问题是,即使我认为我相应地定义了我的变量,即int()或double(),我所得到的文本文件也浮动在它们中。我该如何改变它?savetxt如何从float64类型更改为int或双

输入如下:pNoise=[int(i), around(pNoise[0], decimals=3), around(pNoise[1], decimals=3), around(pNoise[2], decimals=3)]

savetxt线如下:savetxt(noutF, pNoisetot)

我想到的是:0 1.567 8.865,而不是我得到0.000000000000000000e+00 1.015909999999999940e+02 2.600000000000000089e-01

+1

什么'float64'和'double'之间的区别? – Gabe 2011-03-17 23:16:16

+1

这听起来像也许你有错误的格式字符串。向我们展示完整的'savetxt'调用及其输出样本和您期望的样本。 – Gabe 2011-03-17 23:19:20

+0

输入如下:pNoise = [INT(i)中,周围(pNoise [0],小数= 3),围绕(pNoise [1],小数= 3),围绕(pNoise [2],小数= 3)] savetxt线如下:savetxt(noutF,pNoisetot) @Gabe – madtowneast 2011-03-18 15:01:45

回答

19

您可以定义如何输出必须与被格式化fmt关键字np.savetxt,例如:

np.savetxt("file.txt", output, fmt='%10.5f', delimiter='\t') 

四舍五入为五位小数,或fmt='%i'以整数形式输出。

在这里你可以找到有关的fmt的可能性的更多信息:

http://docs.scipy.org/doc/numpy/reference/generated/numpy.savetxt.html

+0

感谢我事先阅读文档,但我的问题是,我其实想ahve像 INT(I)双()双() @ joris – madtowneast 2011-03-18 15:12:26

+3

如果你想让不同的列具有不同的格式,你也可以指定它。在你的情况下,这将是:'fmt ='%i%10.3f%10.3f'' – joris 2011-03-18 17:47:21

3

如果你想指定浮动的小数位数的

np.savetxt("file.txt", output, fmt='%10.5f', delimiter='\t') 

7小数在此情况

np.savetxt("file.txt", output, fmt='%10.7f', delimiter='\t') 

基本上,fmt =%10.Yf'其中Y指定了十进制数。

相关问题