[Numpy-discussion] array dtype=object problem
Travis Oliphant
oliphant.travis at ieee.org
Sat Jan 28 15:05:04 EST 2006
Christopher Fonnesbeck wrote:
> I am having trouble with numpy arrays that have (for some reason) an
> "object" dtype. All that happens in my code is that float values are
> appended to a multidimensional array, this array is transposed, and
> the transposed array is sent to matplotlib. Unfortunately, the array
> ends up being of type "object", which is not recognized by matplotlib:
I'm not sure why that is, but I seem to recall from code that you've
sent me before that you intentionally use object arrays from time to
time. Object arrays stay object arrays unless you request
differently. But, object arrays will usually run more slowly than
fixed-precision arrays.
>
> (Pdb) scatter(x,y)
> *** TypeError: function not supported for these types, and can't
> coerce safely to supported types
>
> Moreover, this array, which clearly contains nothing but floats
> cannot be cast to a float array:
>
> (Pdb) array(y,float)
> *** TypeError: array cannot be safely cast to required type
>
> Can anyone shed some light on this? I am utterly confused.
>
When using the array constructor to cast to another type, there is a
check that is equivalent to the numpy command can_cast(from_dtype,
to_dtype) that is run to see if the conversion is "safe". Of course
casting from an object (which could have infinite precision) to a
fixed-precision floating-point data-type is not safe and you get this
error.
The .astype(to_dtype) method of numpy arrays will always convert
(force-cast) to the request type.
So,
y.astype(float)
will work as you want.
-Travis
More information about the NumPy-Discussion
mailing list