[Numpy-discussion] seting the dtype for where...
oliphant.travis at ieee.org
Fri Dec 1 14:33:45 CST 2006
Chris Barker wrote:
> Hi all,
> I'd like to set the data type for what numpy.where creates. For example:
> import numpy as N
> N.where(a >= 5, 5, 0)
> creates an integer array, which makes sense.
> N.where(a >= 5, 5.0, 0)
> creates a float64 array, which also makes sense, but I'd like a float32
> array, so I tried:
> N.where(a >= 5, array(5.0, dtype=N.float32), 0)
> but I got a float64 array again.
> How can I get a float32 array? where doesn't take a dtype argument --
> maybe it should?
You need to do
N.where(a >= 5, N.float32(5), N.float32(0))
The rules are the same as for ufuncs:
The returned array for mixed-type operations uses the "largest" type
unless one is a scalar and one is an array (then the scalar is ignored
unless the "kind" is different). In this case, you have two scalars (a
0-d array is considered a scalar in this context.
More information about the Numpy-discussion