Re: Matrix Element Extraction

• To: mathgroup at smc.vnet.net
• Subject: [mg46643] Re: [mg46622] Matrix Element Extraction
• From: Andrzej Kozlowski <akoz at mimuw.edu.pl>
• Date: Thu, 26 Feb 2004 17:53:35 -0500 (EST)
• References: <200402251807.NAA05947@smc.vnet.net>
• Sender: owner-wri-mathgroup at wolfram.com

```On 25 Feb 2004, at 19:07, Curt Fischer wrote:

> 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.
>
> --
> Curt Fischer
>
>
>

f[mat_?MatrixQ] := Block[{d = Dimensions[mat], dog, cat},
Join @@ Last[Reap[MapIndexed[If[IntegerQ[#1] && (First[#2] ==
First[
d] || Last[#2] == Last[d]), Sow[#2, dog], Sow[#2, cat]] &, mat,
{2}],
dog]]]

Now with:

mat = {{1, 2, 1}, {4, 5, 6}, {7, 8, -Infinity}};

f[mat]

{{1,3},{2,3},{3,1},{3,2}}

Andrzej Kozlowski
Chiba, Japan
http://www.mimuw.edu.pl/~akoz/

```

• Prev by Date: Re: Matrix Element Extraction
• Next by Date: Re: Matrix Element Extraction
• Previous by thread: Matrix Element Extraction
• Next by thread: Re: Matrix Element Extraction