On Thu, Jul 26, 2012 at 2:33 PM, Phil Hodge <ho...@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
_______________________________________________ NumPy-Discussion mailing list NumPy-Discussion@scipy.org http://mail.scipy.org/mailman/listinfo/numpy-discussion