[Numpy-discussion] seting the dtype for where...

Travis Oliphant 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 mailing list