[Numpy-discussion] a==b for numpy arrays

Tim Hochberg tim.hochberg at ieee.org
Mon Dec 11 16:09:50 EST 2006


Abel Daniel wrote:
> Robert Kern <robert.kern <at> gmail.com> writes:
>
>   
>> Abel Daniel wrote:
>>     
>>> Now, I think that having a way of getting an element-wise comparison
>>> (i.e. getting an array of bools) is great. _But_ why make that the
>>> result of a '==' comparison? Is there any actual code that does, for
>>> example
>>>       
>>>>>> result_array = a==b
>>>>>>             
>>> or any variant thereof?
>>>       
>> Yes, a lot.
>>
>>     
> And it would be much more cumbersome to use something like
> numpy.eq_as_array(a,b) or a.eq_as_array(b) in these cases?
>   
Yes.
> Could you show an example so that I can better appreciate the difference?
>   
# Replace all zeros with something safe so some calculation doesn't go 
insance.
a[a==0] = DELTA

Keep in mind also that all of the comparison operators are overloaded. 
It would be difficult to explain if "a<=0" returned an array, but "a==0" 
returned a scalar.
> The thing I can't get into my head is that '=' in the mathematical sense has a
> well-defined meaning for matrices, this seems to be broken by the current
> behaviour.
Numpy is not really about matrices. Numpy is about array's which are 
different and, for the most part, more powerful. You can use arrays 
inside numpyif you insist, but I personally think you're better off just 
learning to use arrays. Tastes vary though.

>  That is, what "A+B" on a blackboard in a math class means maps nicely
> to what 'a+b' means with a and b being numpy arrays. But 'A=B' means something
> completely different than 'a==b'. 
>   
One thing to keep in mind is that what you have in mind, which is 
equivalent to numpy.all(a==b) is almost always a bad idea when using 
floating point.

-tim





More information about the NumPy-Discussion mailing list