[Numpy-discussion] bug in numpy.where?

Benjamin Root ben.root at ou.edu
Fri Jul 27 14:01:40 EDT 2012


On Thu, Jul 26, 2012 at 2:33 PM, Phil Hodge <hodge at stsci.edu> wrote:

> On a Linux machine:
>
>  > uname -srvop
> Linux 2.6.18-308.8.2.el5 #1 SMP Tue May 29 11:54:17 EDT 2012 x86_64
> GNU/Linux
>
> this example shows an apparent problem with the where function:
>
> Python 2.7.1 (r271:86832, Dec 21 2010, 11:19:43)
> [GCC 4.1.2 20080704 (Red Hat 4.1.2-48)] on linux2
> Type "help", "copyright", "credits" or "license" for more information.
>  >>> import numpy as np
>  >>> print np.__version__
> 1.5.1
>  >>> net = np.zeros(3, dtype='>f4')
>  >>> net[1] = 0.00458849
>  >>> net[2] = 0.605202
>  >>> max_net = net.max()
>  >>> test = np.where(net <= 0., max_net, net)
>  >>> print test
> [ -2.23910537e-35   4.58848989e-03   6.05202019e-01]
>
> When I specified the dtype for net as '>f8', test[0] was
> 3.46244974e+68.  It worked as expected (i.e. test[0] should be 0.605202)
> when I specified float(max_net) as the second argument to np.where.
>
> Phil
>

Confirmed with version 1.7.0.dev-470c857 on a CentOS6 64-bit machine.
Strange indeed.

Breaking it down further:

>>> res = (net <= 0.)
>>> print res
[ True False False]
>>> np.where(res, max_net, net)
array([ -2.23910537e-35,   4.58848989e-03,   6.05202019e-01], dtype=float32)

Very Strange...

Ben Root
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://mail.python.org/pipermail/numpy-discussion/attachments/20120727/cabd144a/attachment.html>


More information about the NumPy-Discussion mailing list