Re: Matrix Element Extraction
- To: mathgroup at smc.vnet.net
- Subject: [mg46642] Re: Matrix Element Extraction
- From: Dr Bob <drbob at bigfoot.com>
- Date: Thu, 26 Feb 2004 17:53:34 -0500 (EST)
- Reply-to: drbob at bigfoot.com
- Sender: owner-wri-mathgroup at wolfram.com
How's this: selector[(a_)?MatrixQ] := Module[{rows, cols}, {rows, cols} = Dimensions[a]; Cases[Position[a, _Integer], {_, cols} | {rows, _}]] selector[{{1, 2, 1}, {4, 5, 6}, {7, 8, -Infinity}}] selector[{{1, 2, 1}, {4, 5, 6}, {7, 8, -Infinity}, {2, 1, 3}}] {{1, 3}, {2, 3}, {3, 1}, {3, 2}} {{1, 3}, {2, 3}, {4, 1}, {4, 2}, {4, 3}} Bobby "Curt Fischer" <crf3 at po.cwru.edu> wrote in message news:<c1irc0$6bn$1 at smc.vnet.net>... > In a matrix, I want to find the positions of all the integer elements in > the > rightmost column or the bottom row. > > In[1]:= > mat={{1,2,1},{4,5,6},{7,8,-Infinity}} > > Out[1]= > {{1,2,1},{4,5,6},{7,8,-Infinity}} > > In[2]:= > Position[Map[((MemberQ[Union[Flatten[{mat[[Length[mat]]], > mat[[All,Dimensions[mat][[ > 2]] ]]}]],#])&&(#!=-Infinity))&,mat,{2}],True] > > Out[2]= > {{1,1},{1,3},{2,3},{3,1},{3,2}} > > This _mostly_ does what I want, but took me forever to think of. I'm > convinced there must be an easier way... > > Especially, is there an easy way to keep the point {1,1} from appearing > on > this > list, other than using a replacement rule and an If[] command? ({1,1} is > not a position in the bottom row or right most column, so I don't want > this > point returned.) > > Thanks for any advice.