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')

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])


Reply via email to