[SciPy-dev] Arrays as truth values?

Perry Greenfield perry at stsci.edu
Tue Nov 8 09:35:42 CST 2005

```On Nov 8, 2005, at 9:21 AM, Ed Schofield wrote:
>
> I agree with this reasoning, but I'd like to illustrate a drawback to
> the
> new behaviour:
>
>>>> a1 = array([1,2,3])
>>>> a2 = a1
>>>> if a1 == a2:
> ...     print "equal"
> ...

>>> a1 = array([[1,2,3],[1,2,3]])
>>> a2 = array([1,2,3])
>>> a1 == a2

These two arrays are not the same shape but because of broadcasting
will show to be equal. Is this what you intended? Some might, some
might not.

Robert has already pointed out that lots of people want == to result in
an array of booleans (most I'd argue) rather than a single boolean
value.

And if you wanted to use the current Numeric behavior, then

>>> array([0,0]) == array([0,1])

will not do what you wish it since there is at least one equal element,
it is treated as true. (again reiterating Robert's point.) Your example
illustrates exactly why allowing this behavior is dangerous. Two
different people looking at this may expect two different results.

Perry

```