Re: style question
- To: mathgroup at smc.vnet.net
- Subject: [mg79367] Re: [mg79315] style question
- From: DrMajorBob <drmajorbob at bigfoot.com>
- Date: Wed, 25 Jul 2007 02:19:09 -0400 (EDT)
- References: <12122347.1185321306092.JavaMail.root@m35>
- Reply-to: drmajorbob at bigfoot.com
Below are a couple of alternatives, with timings.
k = 10^6;
m1 = RandomInteger[{1}, {k, 2, 2}];
m2 = RandomInteger[{1}, {k, 2, 2}];
Timing[
matches = Thread[temporary[m1, m2]] /. temporary -> Equal;
Count[matches, True]
]
Timing@Count[Equal @@@ Transpose@{m1, m2}, True]
equal = Boole@Equal@## &;
Timing[equal @@@ Transpose@{m1, m2} // Total]
{4.266, 62343}
{3.328, 62343}
{4.844, 62343}
Bobby
On Tue, 24 Jul 2007 05:08:18 -0500, Yaroslav Bulatov
<yaroslavvb at gmail.com> wrote:
> What is the recommended way of counting the number of matches in two
> lists?
>
> The natural way would be to thread over Equal, but Equal will evaluate
> before Thread gets to it. The method below works, but somehow feels
> wrong
>
> m1 = RandomInteger[{1}, {10^5, 2, 2}];
> m2 = RandomInteger[{1}, {10^5, 2, 2}];
> matches = Thread[temporary[m1, m2]] /. temporary -> Equal;
> Count[matches, True]
>
>
>
--
DrMajorBob at bigfoot.com