Re: Replace elements in a matrix
- To: mathgroup at smc.vnet.net
- Subject: [mg116464] Re: Replace elements in a matrix
- From: Armand Tamzarian <mike.honeychurch at gmail.com>
- Date: Wed, 16 Feb 2011 04:35:40 -0500 (EST)
- References: <ijdo8r$f7a$1@smc.vnet.net>
On Feb 15, 10:32 pm, kiz_0987 <kp.0... at gmail.com> wrote:
> I'm new to Mathematica and have a question regarding matrices. I was
> sure that this problem must have been answered in the past, but could
> not find a solution.
>
> I want to replace some elements in a matrix (based on value) with
> elements from another matrix at the same position. Eg:
> a = {{0, 1}, {1, 2}};
> b = {{1, 3}, {2, 5}};
>
> I want to replace the elements in "a" which are equal to 1 (say) with
> the same position elements in b to give:
> c = {{0, 3}, {2, 2}};
>
> How can I do this? I started with using Position and ReplacePart but
> could not figure out how to get it to work in this case (other cases
> are documented, such as replacing with a single value).
>
> Any help appreciated. Thanks.
There may be a more elegant way but this works:
transform[a_, b_, value_] := Module[{pos, c = a},
pos = Position[c, value];
(c[[Sequence @@ #]] = b[[Sequence @@ #]]) & /@ pos;
c]
In[]= transform[a, b, 1]
Out[]= {{0, 3}, {2, 2}}
Mike