
Hi, There is some unexpected behaviour (to me) when 0-dimensional arrays are compared with values. For example:
numpy.array([0]).squeeze() == 0 True
numpy.array([None]).squeeze() == None False
numpy.array(['a']).squeeze() == 'a' array(True, dtype=bool)
Note that each test follows the same pattern, although the dtype for each squeezed array is different. The first case result is what I expected, and the second case result appears wrong. The return type for the third case is inconsistent with those before, but is at least workable. Are these the intended results? Thanks, Tom -- Thomas J. Duck <tom.duck@dal.ca> Associate Professor, Department of Physics and Atmospheric Science, Dalhousie University, Halifax, Nova Scotia, Canada, B3H 3J5. Tel: (902)494-1456 | Fax: (902)494-5191 | Lab: (902)494-3813 Web: http://aolab.phys.dal.ca/

2008/7/25 Thomas J. Duck <tom.duck@dal.ca>:
Hi,
There is some unexpected behaviour (to me) when 0-dimensional arrays are compared with values. For example:
numpy.array([0]).squeeze() == 0 True
numpy.array([None]).squeeze() == None False
numpy.array(['a']).squeeze() == 'a' array(True, dtype=bool)
Note that each test follows the same pattern, although the dtype for each squeezed array is different. The first case result is what I expected, and the second case result appears wrong. The return type for the third case is inconsistent with those before, but is at least workable.
Are these the intended results?
I would think not. E.g., in the following case broadcasting should kick in: In [20]: np.array([None, None, None]) == None Out[20]: False In [21]: np.array([None, None, None]) == [None] Out[21]: array([ True, True, True], dtype=bool) Cheers Stéfan

On Fri, Jul 25, 2008 at 19:19, Stéfan van der Walt <stefan@sun.ac.za> wrote:
2008/7/25 Thomas J. Duck <tom.duck@dal.ca>:
Hi,
There is some unexpected behaviour (to me) when 0-dimensional arrays are compared with values. For example:
numpy.array([0]).squeeze() == 0 True
numpy.array([None]).squeeze() == None False
numpy.array(['a']).squeeze() == 'a' array(True, dtype=bool)
Note that each test follows the same pattern, although the dtype for each squeezed array is different. The first case result is what I expected, and the second case result appears wrong. The return type for the third case is inconsistent with those before, but is at least workable.
Are these the intended results?
I would think not. E.g., in the following case broadcasting should kick in:
In [20]: np.array([None, None, None]) == None Out[20]: False
(some_ndarray == None) == False is actually an intentional special case. I forget the details of why, and I don't feel like reinstalling Numeric or numarray to see if it was backwards compatibility, but it's not a bug. -- Robert Kern "I have come to believe that the whole world is an enigma, a harmless enigma that is made terrible by our own mad attempt to interpret it as though it had an underlying truth." -- Umberto Eco
participants (3)
-
Robert Kern
-
Stéfan van der Walt
-
Thomas J. Duck