我试图从一个输入文件(input.txt)中找到标准差和平均值,该输入文件由一列中的5000个数据组成,我希望输出文件' outfile.txt'。我的代码如下:
import numpy
来自numpy import *
def main():
outfile = open('outfile.txt','w')
DataIn = loadtxt('input.txt')
s = DataIn.std()
m = DataIn.mean()
outfile.write(s + '\n')
outfile.write(m + '\n')
outfile.close()
main()的
当执行python 2.7.1时,出现以下消息:TypeError:不支持的操作数类型+:' numpy.float64'和' str'
但是,如果在屏幕上打印输出而不是输出文件,则以下代码运行良好:
import numpy
from numpy import *
DataIn = loadtxt('input.txt')
s = DataIn.std()
print s
让我帮忙获取正确的代码。
答案 0 :(得分:2)
试试这个:
outfile.write(str(s) + '\n')
outfile.write(str(m) + '\n')
答案 1 :(得分:1)
第一种情况失败,因为s + '\n'
尝试添加两个不同类型的参数,并且可用于实现此参数的任何函数(numpy.float64.__add__
和str.__radd__
)都知道如何添加numpy.float64
和str
。您必须明确,或者使用
str
outfile.write(str(s) + '\n')
或使用不同的功能。这样的事情会更好:
outfile.write( "{0}\n".format(s) )
第二种情况成功,因为print
语句隐式调用传递给它的每个表达式str
),所以它就像你写的那样工作
print str(s)
不涉及加法运算符,因此不需要未定义的隐式转换。
请注意,如果numpy.float64.__add__
被定义为
def __add__(self, x):
if isinstance(x, str):
return str(self) + x
...
答案 2 :(得分:1)
您希望输出具有特定数量的数字吗?如果是这样,请替换
行outfile.write(s + '\n')
outfile.write(m + '\n')
与例如
outfile.write('{:1.4f}\n'.format(s))
outfile.write('{:1.4f}\n'.format(m))
这将为您提供浮点后4位数字。见String formatting examples