Beginner: List Indexing and Assignment
- To: mathgroup at smc.vnet.net
- Subject: [mg94486] Beginner: List Indexing and Assignment
- From: C Rose <cjr.list.alias.1 at me.com>
- Date: Sun, 14 Dec 2008 07:41:13 -0500 (EST)
Hi I am moving from another system to Mathematica and have a few simple questions about indexing and altering lists. I've been able to find Mathematica equivalents to some of the other system's idioms, but as a Mathematica neophyte they're not very elegant. I'd be very grateful if someone could tell me the Mathematica equivalents---or point me to a suitable Rosetta stone (Google didn't easily turn one up). In the other system, I would create a 2x3 matrix using a = [1 2 3; 4 5 6] resulting in [1 2 3] [4 5 6] and then assign any element of the matrix whose value is greater than 2 the value -1 using a(a>2) = -1 resulting in [ 1 2 -1] [-1 -1 -1] I can do this in Mathematica by: a = ReplacePart[a, Position[a, x_ /; x > 2] -> -1] but is there a more elegant method? Another way (in the other system) is to create a logical array: logical = a>2 resulting in [0 0 1] [1 1 1] and I could then do a(logical) = -1 again resulting in [ 1 2 -1] [-1 -1 -1] I have been able to approximate this in Mathematica as logical = a /. x_ /; x > 2 -> True (* Note, unlike above, logical contains values of True and other integers. *) ReplacePart[a, Position[logical, x_ /; x == True] -> -1] Is there a more elegant method in Mathematica? (Of course, 'elegant' is a subjective quality; perhaps 'brevity' is a better word :-) Many thanks in advance Chris