savetxt如何将类型从float64转换为int或double

22 投票
2 回答
33803 浏览
提问于 2025-04-16 13:56

我一直在尝试使用numpy里的savetxt函数。遇到的问题是,尽管我已经按照要求定义了我的变量,比如用int()或double(),但输出的文本文件里却还是有浮点数。请问我该怎么改变这个情况呢?

输入的内容是这样的: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

2 个回答

5

如果你想设置浮点数的小数位数,可以使用下面的代码:

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就是你想要的小数位数。

38

你可以通过 np.savetxt 里的 fmt 参数来定义输出的格式,比如:

  • 如果你想把浮点数保留到小数点后五位:

      np.savetxt("file.txt", output, fmt='%10.5f', delimiter='\t')
    
  • 如果你想保存整数:

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

在这里你可以找到关于 fmt 参数更多的使用信息:

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

撰写回答