Re: [Numpy-discussion] bug in numpy.where?

2012-07-30 Thread Phil Hodge
On 07/27/2012 03:58 PM, Andreas Mueller wrote:
 Hi Everybody.
 The bug is that no error is raised, right?
 The docs say

 where(condition, [x, y])

 x, y : array_like, optional
   Values from which to choose. `x` and `y` need to have the same
   shape as `condition`

 In the example you gave, x was a scalar.

net.max() returns an array:

  print type(net.max())
type 'numpy.float32'

That was the reason I cast it to a float to check that that did result 
in the correct behavior for `where`.

Phil
___
NumPy-Discussion mailing list
NumPy-Discussion@scipy.org
http://mail.scipy.org/mailman/listinfo/numpy-discussion


Re: [Numpy-discussion] bug in numpy.where?

2012-07-30 Thread Robert Kern
On Mon, Jul 30, 2012 at 2:30 PM, Phil Hodge ho...@stsci.edu wrote:
 On 07/27/2012 03:58 PM, Andreas Mueller wrote:
 Hi Everybody.
 The bug is that no error is raised, right?
 The docs say

 where(condition, [x, y])

 x, y : array_like, optional
   Values from which to choose. `x` and `y` need to have the same
   shape as `condition`

 In the example you gave, x was a scalar.

 net.max() returns an array:

   print type(net.max())
 type 'numpy.float32'

No, that's a scalar. The type would be numpy.ndarray if it were an array.

-- 
Robert Kern
___
NumPy-Discussion mailing list
NumPy-Discussion@scipy.org
http://mail.scipy.org/mailman/listinfo/numpy-discussion


Re: [Numpy-discussion] bug in numpy.where?

2012-07-30 Thread Travis Oliphant
Can you file a bug report on Github's issue tracker? 

Thanks,

-Travis

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

___
NumPy-Discussion mailing list
NumPy-Discussion@scipy.org
http://mail.scipy.org/mailman/listinfo/numpy-discussion


Re: [Numpy-discussion] bug in numpy.where?

2012-07-30 Thread Phil Hodge
On 07/30/2012 10:53 AM, Travis Oliphant wrote:
 Can you file a bug report on Github's issue tracker?

It's https://github.com/numpy/numpy/issues/369

Phil
___
NumPy-Discussion mailing list
NumPy-Discussion@scipy.org
http://mail.scipy.org/mailman/listinfo/numpy-discussion


Re: [Numpy-discussion] bug in numpy.where?

2012-07-27 Thread Benjamin Root
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


Re: [Numpy-discussion] bug in numpy.where?

2012-07-27 Thread Christopher Hanley
On Fri, Jul 27, 2012 at 2:01 PM, Benjamin Root ben.r...@ou.edu wrote:



 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


What if find really interesting is that -2.23910537e-35 is the byte swapped
version of 6.05202019e-01.

Chris
___
NumPy-Discussion mailing list
NumPy-Discussion@scipy.org
http://mail.scipy.org/mailman/listinfo/numpy-discussion


Re: [Numpy-discussion] bug in numpy.where?

2012-07-27 Thread Andreas Mueller
Hi Everybody.
The bug is that no error is raised, right?
The docs say

where(condition, [x, y])

x, y : array_like, optional
 Values from which to choose. `x` and `y` need to have the same
 shape as `condition`

In the example you gave, x was a scalar.

Cheers,
Andy
___
NumPy-Discussion mailing list
NumPy-Discussion@scipy.org
http://mail.scipy.org/mailman/listinfo/numpy-discussion


Re: [Numpy-discussion] bug in numpy.where?

2012-07-27 Thread Benjamin Root
On Fri, Jul 27, 2012 at 3:58 PM, Andreas Mueller
amuel...@ais.uni-bonn.dewrote:

 Hi Everybody.
 The bug is that no error is raised, right?
 The docs say

 where(condition, [x, y])

 x, y : array_like, optional
  Values from which to choose. `x` and `y` need to have the same
  shape as `condition`

 In the example you gave, x was a scalar.

 Cheers,
 Andy


Hmm, that is incorrect, I believe.  I have used a scalar before.  Maybe it
works because a scalar is broadcastable to the same shape as any other
N-dim array?

If so, then the wording of that docstring needs to be fixed.

No, I think Christopher hit it on the head.  For whatever reason, the
endian-ness somewhere is not being respected and causes a byte-swapped
version to show up.  How that happens, though, is beyond me.

Ben Root
___
NumPy-Discussion mailing list
NumPy-Discussion@scipy.org
http://mail.scipy.org/mailman/listinfo/numpy-discussion


Re: [Numpy-discussion] bug in numpy.where?

2012-07-27 Thread Andreas Mueller

On 07/27/2012 09:10 PM, Benjamin Root wrote:



On Fri, Jul 27, 2012 at 3:58 PM, Andreas Mueller 
amuel...@ais.uni-bonn.de mailto:amuel...@ais.uni-bonn.de wrote:


Hi Everybody.
The bug is that no error is raised, right?
The docs say

where(condition, [x, y])

x, y : array_like, optional
 Values from which to choose. `x` and `y` need to have the same
 shape as `condition`

In the example you gave, x was a scalar.

Cheers,
Andy


Hmm, that is incorrect, I believe.  I have used a scalar before.  
Maybe it works because a scalar is broadcastable to the same shape as 
any other N-dim array?


If so, then the wording of that docstring needs to be fixed.

No, I think Christopher hit it on the head.  For whatever reason, the 
endian-ness somewhere is not being respected and causes a byte-swapped 
version to show up.  How that happens, though, is beyond me.


Well, if you use np.repeat(max_net, 3) instead of max_net, it works as 
expected.

So if you use the function as documented, it does the right thing.
___
NumPy-Discussion mailing list
NumPy-Discussion@scipy.org
http://mail.scipy.org/mailman/listinfo/numpy-discussion


Re: [Numpy-discussion] bug in numpy.where?

2012-07-27 Thread Christopher Hanley
On Fri, Jul 27, 2012 at 4:10 PM, Benjamin Root ben.r...@ou.edu wrote:



 On Fri, Jul 27, 2012 at 3:58 PM, Andreas Mueller amuel...@ais.uni-bonn.de
  wrote:

 Hi Everybody.
 The bug is that no error is raised, right?
 The docs say

 where(condition, [x, y])

 x, y : array_like, optional
  Values from which to choose. `x` and `y` need to have the same
  shape as `condition`

 In the example you gave, x was a scalar.

 Cheers,
 Andy


 Hmm, that is incorrect, I believe.  I have used a scalar before.  Maybe it
 works because a scalar is broadcastable to the same shape as any other
 N-dim array?

 If so, then the wording of that docstring needs to be fixed.

 No, I think Christopher hit it on the head.  For whatever reason, the
 endian-ness somewhere is not being respected and causes a byte-swapped
 version to show up.  How that happens, though, is beyond me.

 Ben Root



It may have something to do with the dtype size as well.  The problem seen
with,
net = np.zeros(3, dtype='f4')

Disappears for
net = np.zeros(3, dtype='f8')

and above.

Chris
___
NumPy-Discussion mailing list
NumPy-Discussion@scipy.org
http://mail.scipy.org/mailman/listinfo/numpy-discussion