MathGroup Archive 2007

[Date Index] [Thread Index] [Author Index]

Search the Archive

Re: style question

  • To: mathgroup at smc.vnet.net
  • Subject: [mg79428] Re: [mg79315] style question
  • From: Carl Woll <carlw at wolfram.com>
  • Date: Thu, 26 Jul 2007 05:39:32 -0400 (EDT)
  • References: <200707241008.GAA26147@smc.vnet.net>

Yaroslav Bulatov 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]
>
>  
>
For this particular problem (in version 6), it's faster to use 
arithmetic and total:

In[1]:= k = 10^6;
m1 = RandomInteger[1, {k, 2, 2}];
m2 = RandomInteger[1, {k, 2, 2}];

In[4]:= Timing[
 matches = Thread[temporary[m1, m2]] /. temporary -> Equal;
 Count[matches, True]]

Out[4]= {3.453, 62300}

In[5]:= Count[Total[Unitize[m1 - m2], {2, 3}], 0] // Timing

Out[5]= {0.391, 62300}

Carl Woll
Wolfram Research


  • References:
  • Prev by Date: Re: Cyclic permutations
  • Next by Date: Re: how to make Sum[n,{n,1,5}] to print 1+2+3+4+5? HoldForm?
  • Previous by thread: Re: style question
  • Next by thread: Re: style question