[Date Index]
[Thread Index]
[Author Index]
Re: Some function like Position[] but uses criteria, not
*To*: mathgroup at smc.vnet.net
*Subject*: [mg99440] Re: [mg99389] Some function like Position[] but uses criteria, not
*From*: Leonid Shifrin <lshifr at gmail.com>
*Date*: Wed, 6 May 2009 05:20:01 -0400 (EDT)
*References*: <200905050937.FAA20364@smc.vnet.net>
Nasser,
Position is more versatile than you think. Use restricted patterns with
Condition (/;) or PatternTest (?):
In[1] = a = {1, 0, 4, -5, 8};
In[2] = Position[a, _?(# > 3 &)]
Out[2] = {{3}, {5}}
In[3] = Position[a, x_ /; x > 3]
Out[3] = {{3}, {5}}
Be sure to use parentheses if using PatternTest (?) with pure functions,
like in the code above, or you may get precedence-related bugs.
Regards,
Leonid
On Tue, May 5, 2009 at 2:37 AM, Nasser Abbasi <nma at 12000.org> wrote:
> V 7.0
>
> Position[] works by returning position of elements which matches a
> pattern.
> This is all good and well.
>
> But sometimes, I need to find the positions (i.e index) of elements that
> matches a criteria, not a pattern.
>
> For example, using pattern
>
> a = {1, 0, 4, -5, 8}
> Position[a, 0]
> Out[15]= {{2}}
>
> But what if I wanted the position of the elements which, say, are larger
> than 3? this is not a pttern, but a criteria. Which in this example should
> find elements which are in position 3 and 5 in list 'a' above.
>
> I can't type
> Position[a, #1 > 3 & ]
>
> Now, Select[] does take a criteria, good, so I could type
>
> Select[a, #1 > 3 & ]
> {4, 8}
>
> But I wanted the positions of the elements, not the elements themselves.
>
> I could use Select to find the elements, then use Position to find the
> position of these elements as follows
>
> c = Select[a, #1 > 3 & ];
> Flatten[(Position[a, #1] & ) /@ c]
>
> Out[65]= {3, 5}
>
> But I think this is bit messy. I think Position[] or new function similar,
> should have an option to return position of elements based on criteria, not
> just pattern. The above gets more messy for me, when I wanted to find
> position of elements in a matrix based on some criteria.
>
> For example, find the position (i.e. row and column) index in a matrix
> (list
> of lists) of those elements which matches some criteria. Say >3.
>
> thanks,
> --Nasser
>
>
>
>
>
Prev by Date:
** Re: number of Trangles in a graph-network**
Next by Date:
**Re: Re: Re: Introducing the Wolfram Mathematica**
Previous by thread:
**Some function like Position[] but uses criteria, not pattern?**
Next by thread:
**Re: Some function like Position[] but uses criteria, not**
| |