On Feb 6, 9:37 pm, "Mr. Wizard" <gl... at flashmail.com> wrote:
> >I just found another way that outperforms both of our solutions on a
> >wide range of integer arrays I tested. It turns out that one can
> >extract the position directly from SparseArray, without using
> >ArrayRules. It took me some time to figure it out:
>
> >extractPositionFromSparseArray[
> > HoldPattern[SparseArray[u___]]] := {u}[[4, 2, 2]]
>
> >positionExtr[x_List, n_] :=
> > Flatten@extractPositionFromSparseArray[
> > SparseArray[1 - Unitize[x - n]]]
>
> >Again, no unpacking.
>
> >Best,
> >Norbert
>
> Oliver Ruebenkoenig recently gave an easier way to get these values
> in the thread "Fast matrices comparison" started January 25th, 2011.
>
> SparseArray[{0, 1, 0, 0, 1, 0, 1, 1, 0, 0}]["NonzeroPositions"]
>
> SparseArray[{1}]["Properties"]
>
> Paul
I noted in his post that this stuff is undocumented. Hard to fathom
why this would be. Wonder if this is a V8 thing or has been there
since SparseArray was included.
Oliver, if you're reading this, what other undocumented goodies can
you show to the group?
Mike