Mapping to a specific column or row in a matrix
- To: mathgroup at smc.vnet.net
- Subject: [mg102985] Mapping to a specific column or row in a matrix
- From: pfalloon <pfalloon at gmail.com>
- Date: Thu, 3 Sep 2009 07:10:15 -0400 (EDT)
Hi,
I'm wondering if there is a more simple/elegant way to Map a function
to a specific row or column of a matrix. The best I can come up
requires both Map and MapAt, but it feels like there should be
something more succinct (I suspect I may be overlooking something
obvious).
Example: suppose I want to divide entries in the 3rd column by 10.
(* my clunky solution *)
mat = ConstantArray[1, {10,5}];
res = Map[MapAt[#/10 &, #, 3] &, mat]
Note that the desired output is the entire matrix, so that rules out
something like:
mat[[All,3]]/10
One thing that would seem natural would be to allow "All" as an
element specification in the MapAt function. Thus, what I'm trying to
do would be expressed as:
(* doesn't work, but would be nice *)
MapAt[#/10 &, mat, {All,3}]
and if I wanted to do it to a specific row (say, the 3rd) it would be:
(* doesn't work, but would be nice *)
MapAt[#/10 &, mat, {3, All}]
Any thoughts/suggestions?
Thanks,
Peter.
- Follow-Ups:
- Re: Mapping to a specific column or row in a matrix
- From: Leonid Shifrin <lshifr@gmail.com>
- Re: Mapping to a specific column or row in a matrix
- From: Sseziwa Mukasa <mukasa@jeol.com>
- Re: Mapping to a specific column or row in a matrix
- From: Adriano Pascoletti <adriano.pascoletti@dimi.uniud.it>
- Re: Mapping to a specific column or row in a matrix