4

I have a numpy histogram that I would like to output as a tab-delimited text file. My code is below:

targethist = np.histogram(targetlist, bins=ilist)
print targethist
np.savetxt('ChrI_dens.txt',targethist,delimiter='\t')

targetlist and ilist are long lists of integers. I get the following output:

(array([0, 0, 0, ..., 0, 0, 0]), array([ 1, 10000, 20000, ..., 15060000, 15070000, 15072422])) Traceback (most recent call last): File "target_dens_np.py", line 62, in np.savetxt('ChrI_dens.txt',targethist,delimiter='\t') File "/Library/Frameworks/Python.framework/Versions/7.3/lib/python2.7/site-packages/numpy/lib/npyio.py", line 979, in savetxt fh.write(asbytes(format % tuple(row) + newline)) TypeError: float argument required, not numpy.ndarray

It seems that the histogram array has been created, but I have done something wrong in the np.savetxt() line. I have read the documentation, but don't understand why any of the arguments in this function would be expecting a float. Where have I gone wrong?

1 Answer 1

5

I think that the problem is that the second argument to savetxt must be "array-like". Your input is not "array-like". e.g.

print (len(targethist[0]))
print (len(targethist[1]))

Notice the lengths aren't the same? If the lengths were the same, numpy could convert it to a single 2-D array and everything would be fine, but it can't do the conversion so it fails.

This works

np.savetxt('stuff.dat',(targethist[0],targethist[1][1:]),delimiter='\t')

But I've truncated your data ;). You'll need to decide what you want to do to work around this one.

I must admit, the error message here is quite cryptic.

Sign up to request clarification or add additional context in comments.

2 Comments

Spot on! This should have occurred to me before I encountered the cryptic error, anyway. As it turns out, I want to truncate the first integer in the longer array, so this is perfect. Thanks!
@pandaSeq I have to admit -- based on that traceback I was scratching my head on this one for a few minutes. Usually when python-numpy questions sit on SO for more than 10 minutes without any answers, you know something funny is going on ;).

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.