我正在尝试运行某人的脚本进行一些模拟我尝试绘制一些直方图,但是当我这样做时,我总是得到上面提到的错误信息.我不知道出了什么问题.
这是我得到的完整回溯错误:
File "AVAnalyse.py", line 205, inf.write(line[0]+' '+line[1]+' '+line[2]+' '+line[3]) TypeError: ufunc 'add' did not contain a loop with signature matching types dtype('S32') dtype('S32') dtype('S32')
这是我试图运行的代码:
name_out = "histogram_"+donor+"_"+acceptor+".dat" f = open(name_out,'w') f.write('distance d.probability efficiency e.probability') for line in dist_hist: f.write(line[0]+' '+line[1]+' '+line[2]+' '+line[3]) f.close() print "data saved in " +"histogram_"+donor+"_"+acceptor+".dat"
任何关于我出错的帮助/解释都将不胜感激!先感谢您!
这似乎是line[0]
,line[1]
,line[2]
,line[3]
是的元素dist_hist
.dict_hist
是一个numpy.ndarray
.元素dict_hist
具有数字类型(如np.float64
)(基于附加文件的计算).您正在尝试添加不同类型的元素:np.float64
和str
.如果你想避免这种情况TypeError
,你可以改变的类型line[0]
,line[1]
,line[2]
,line[3]
为str.
你的代码片段应该是这样的:
name_out = "histogram_"+donor+"_"+acceptor+".dat" f = open(name_out,'w') f.write('distance d.probability efficiency e.probability') for line in dist_hist: f.write(str(line[0])+' '+str(line[1])+' '+str(line[2])+' '+str(line[3])) f.close() print "data saved in " +"histogram_"+donor+"_"+acceptor+".dat"
编辑:
你应该替换这段代码:
name_out = "histogram_"+donor+"_"+acceptor+".dat" f = open(name_out,'w') f.write('distance d.probability efficiency e.probability') for line in dist_hist: f.write(line[0]+' '+line[1]+' '+line[2]+' '+line[3]) f.close()
到这一个:
name_out = "histogram_" + donor + "_" + acceptor + ".dat" f = open(name_out,'w') f.write('distance d.probability efficiency e.probability\n') for line in dist_hist: f.write(str(line[0]) + ' ' + str(line[1]) + ' ' + str(line[2]) + ' ' + str(line[3]) + '\n') f.close()
在此之前,字符串被写入一行文件.因为你的数据变量指向空数组,因为我们开始从第二行读取(它是空的).