MathGroup Archive 2007

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

Search the Archive

Re: style question

  • To: mathgroup at smc.vnet.net
  • Subject: [mg79424] Re: style question
  • From: Vince Virgilio <blueschi at gmail.com>
  • Date: Thu, 26 Jul 2007 05:37:28 -0400 (EDT)
  • References: <f84jp8$qmp$1@smc.vnet.net><f86rat$pfm$1@smc.vnet.net>

On Jul 25, 2:41 am, Vince Virgilio <blues... at gmail.com> wrote:
> On Jul 24, 6:20 am, Yaroslav Bulatov <yarosla... 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]
>
> MapThread should avoid eager evaluation of Equal. I am away from
> Mathematica, so cannot test this:
>
>     matches = MapThread[Equal, {m1, m2}];
>
> (I wonder if MapThread was created specifically to mitigate evaluation
> issues.)
>
> Vince Virgilio

Correction to self. I overlooked the three-dimensionality of m1 and
m2. Again I'm without Mathematica; still you might try:

    matches = MapThread[Equal, {m1, m2}, 3];
    Count[matches, True, {3}]

By the way, your syntax for the first argument of RandomInteger
appears to be undocumented.

Vince Virgilio



  • Prev by Date: Re: Cyclic permutations
  • Next by Date: Re: Mathematica to .NET compiler
  • Previous by thread: Re: style question
  • Next by thread: Re: Re: style question