On Wed, Oct 27, 2010 at 9:37 AM, Johann Cohen-Tanugi
<cohen@lpta.in2p3.fr> wrote:
>>> On 10/27/2010 03:31 PM, Neal Becker wrote:
>> Johann Cohen-Tanugi wrote:
>>>>>>> how about np.any(a!=b) ??
>>>>>> On 10/27/2010 12:25 PM, Neal Becker wrote:
>>>>>>> Is there a way to get a short circuit != ?
>>>>>>>> That is, compare 2 arrays but stop as soon as the first element
>>>> comparison fails?
>>>>>>>> I'm assuming that np.all (a != b) will _not_ do this, but will first
>>>> compare all elements.
>>>>>>>> _______________________________________________
>>>> NumPy-Discussion mailing list
>>>>NumPy-Discussion@scipy.org>>>>http://mail.scipy.org/mailman/listinfo/numpy-discussion>>>>>>>>>>>>>> I don't think that will do short ciruit, will it? I think that will compare
>> each element, returning a bool array, then short-circuit eval that bool
>> array.
>>>>> In [3]: a=np.array([2,3,
>> In [4]: b=np.array([2,5,
>> In [5]: np.any(a!=b)
> Out[5]: True
>> it does not return a bool array, it seems. I do not see how you would
> "broadcast" the notion of "any".... along axes maybe?
>
Not definitive by any means, but
In [28]: a = np.arange(1,10000000)
In [29]: b = np.arange(1,10000000)
In [30]: timeit np.any(a!=b)
10 loops, best of 3: 37.8 ms per loop
In [31]: a[0] = 10.
In [32]: timeit np.any(a!=b)
10 loops, best of 3: 24.7 ms per loop
In [33]: a[0] = 1
In [34]: a[-1] = 1
In [35]: timeit np.any(a!=b)
10 loops, best of 3: 37.7 ms per loop
It seems to at least take less time when the difference is at the
"beginning," though I'm sure there could be exceptions.
Skipper