Given a matrix, find position of first non-zero element in each row
- To: mathgroup at smc.vnet.net
- Subject: [mg99492] Given a matrix, find position of first non-zero element in each row
- From: "Nasser Abbasi" <nma at 12000.org>
- Date: Wed, 6 May 2009 05:29:44 -0400 (EDT)
- Reply-to: "Nasser Abbasi" <nma at 12000.org>
This is a little problem I saw in another forum, and I am trying to also solve it in Mathematica. Given a Matrix, I need to find the position of the first occurance of a value which is not zero in each row. The position found will be the position in the orginal matrix ofcourse. So, given this matrix, A = { {0, 0, 5}, {50, 0, 100}, {0, 75, 100}, {75, 100, 0}, {0, 75, 100}, {0, 75, 100} }; The result should be {{1, 3}, {2, 1}, {3, 2}, {4, 1}, {5, 2}, {6, 2}} This is how I solved this problem and after a bit of struggle. I wanted to see if I could avoid using a Table, and solve it just using Patterns and Position and Select, but could not so far. Table[Flatten[{i, Flatten[Position[A[[i,All]], _?(#1 != 0 & ), 1, 1]]}], {i, 1, 6}] Out[174]= {{1, 3}, {2, 1}, {3, 2}, {4, 1}, {5, 2}, {6, 2}} I am not happy with the above solution. I am sure there is a better one (the above also do not work well when one row has all zeros). Do you see a better and more elegant way to do this? thanks, --Nasser
- Follow-Ups:
- Re: Given a matrix, find position of first non-zero element
- From: Adriano Pascoletti <adriano.pascoletti@dimi.uniud.it>
- Re: Given a matrix, find position of first non-zero element
- From: Leonid Shifrin <lshifr@gmail.com>
- Re: Given a matrix, find position of first non-zero element in each row
- From: Andrzej Kozlowski <akoz@mimuw.edu.pl>
- Re: Given a matrix, find position of first non-zero element