Collectives™ on Stack Overflow
Find centralized, trusted content and collaborate around the technologies you use most.
Learn more about Collectives
Teams
Q&A for work
Connect and share knowledge within a single location that is structured and easy to search.
Learn more about Teams
Ask Question
I'm trying to run someone's script for some simulations I've made to try plotting some histograms, but when I do I always get the error message mentioned above. I have no idea what's gone wrong.
Here's the complete traceback error I get:
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')
This is the code I am trying to run:
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"
What am I doing wrong?
–
–
–
It seems like line[0]
, line[1]
, line[2]
, line[3]
are elements of dist_hist
. dict_hist
is a numpy.ndarray
. The elements of dict_hist
has a numeric type (like np.float64
) (based on calculations from your attached file). You're trying to add elements of different types: np.float64
and str
. If you want to avoid this TypeError
, you can change type of line[0]
, line[1]
, line[2]
, line[3]
to str.
Your snippet of code should be like this:
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"
EDIT:
You should replace this snippet of code:
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()
to this one:
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()
Before that, strings were written to file in one line. Because of that your data variable point to empty array since we start to read from 2nd line (which was empty).
–
Thanks for contributing an answer to Stack Overflow!
- Please be sure to answer the question. Provide details and share your research!
But avoid …
- Asking for help, clarification, or responding to other answers.
- Making statements based on opinion; back them up with references or personal experience.
To learn more, see our tips on writing great answers.