Jamie Mitchell wrote: > Hi folks, > > I'm trying to plot a 2D histogram but I'm having some issues: > from pylab import * > import numpy as np > import netCDF4 > hist,xedges,yedges=np.histogram2d(x,y,bins=10) > extent=[xedges[0],xedges[-1],yedges[0],yedges[-1]] > imshow(hist.T,extent=extent,interpolation='nearest') > colorbar() > show() > > After the first line of code I get: > TypeError: Cannot cast array data from dtype('O') to dtype('float64') > according to the rule 'safe' > > I'm using python2.7, x and y are type 'numpy.ndarray'
The error message complains about the dtype, i. e. the type of the elements in the array, not the array itself. Make sure the elements are floating point numbers or something compatible, not arbitrary Python objects. As a baseline the following works from pylab import * import numpy as np x, y = np.random.randn(2, 100) print "x", type(x), x.dtype print "y", type(y), y.dtype hist, xedges, yedges = np.histogram2d(x, y, bins=10) extent = [xedges[0], xedges[-1], yedges[0], yedges[-1]] imshow(hist.T, extent=extent, interpolation='nearest') colorbar() show() while this doesn't: #... x, y = np.random.randn(2, 100) import decimal y = np.array([decimal.Decimal.from_float(v) for v in y]) #... -- https://mail.python.org/mailman/listinfo/python-list