我试图运行某人的脚本进行一些模拟,我尝试绘制一些直方图,但是当我这样做时,我总是得到上面提到的错误信息。我不知道出了什么问题。
这是我得到的完整回溯错误:
File "AVAnalyse.py", line 205, in <module>
f.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"
任何有关我出错的帮助/解释都将不胜感激!提前谢谢!
答案 0 :(得分:18)
似乎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()
在此之前,字符串被写入一行文件。因为你的数据变量指向空数组,因为我们开始从第二行(它是空的)读取。