Re: Logical comparisons of items in a two lists
- To: mathgroup at smc.vnet.net
- Subject: [mg75472] Re: Logical comparisons of items in a two lists
- From: Ray Koopman <koopman at sfu.ca>
- Date: Wed, 2 May 2007 03:50:42 -0400 (EDT)
- References: <f16q2u$7er$1@smc.vnet.net>
On May 1, 12:26 am, "actu... at mchsi.com" <actu... at mchsi.com> wrote:
> Hello:
>
> I have two lists of real numbers, a & b. I want two compare
> individual items in one list to the corresponding items in the other
> list. For example Is a[[1]] > b[[1]]. At the end of the comparisons,
> I want to count the "Trues". I know how to do this use a "Table"
> statement and a "Count" statement. Is there a quicker, more efficient
> way of counting the number of "Trues".
>
> Thanks
>
> Larry
If the comparison can be reduced to a sign check
then UnitStep is hard to beat.
{a,b} = Table[Random[],{2},{1*^5}];
Timing[Length@a - Total@UnitStep[b-a]]
Timing@Total@Boole@Thread[a > b]
Timing@Count[a-b, _?Positive]
Timing@Inner[Boole@Greater@##&, a, b]
Timing@Count[Transpose@{a,b}, _?(Greater@@#&)]
{0.06 Second,49958}
{0.23 Second,49958}
{0.25 Second,49958}
{0.38 Second,49958}
{0.64 Second,49958}