Re: How to subtract two sets of data for a ListPlot
- To: mathgroup at smc.vnet.net
- Subject: [mg76720] Re: How to subtract two sets of data for a ListPlot
- From: Jean-Marc Gulliet <jeanmarc.gulliet at gmail.com>
- Date: Sat, 26 May 2007 04:36:30 -0400 (EDT)
- Organization: The Open University, Milton Keynes, UK
- References: <f36gb5$9fq$1@smc.vnet.net>
chuck009 wrote: > Hi all. Suppose I've calculated two sets of lists of the form for example: > > list1={{1,1},{2,2},{3,3}}; > > list2={{1,1},{2,4},{3,9}}; > > What's an efficient way to create a third list with the same x-values but with the y-values subtracted > > newlist={{1,0},{2,-2},{3,-6}}; > > I realize I can manually subtract them in a For-loop, but I'm sure a one-line command using Map or some other construct can be used as well but can't figure it out. > > Thanks! > Several possibilities are illustrated below. In[1]:= list1 = {{1, 1}, {2, 2}, {3, 3}}; list2 = {{1, 1}, {2, 4}, {3, 9}}; Module[{temp = list2}, temp[[All, 1]] = 0; list1 - temp] ({#1[[1, 1]], #1[[1, 2]] - #1[[2, 2]]} & ) /@ Thread[{list1, list2}] Transpose[{list1[[All, 1]], (list1 - list2)[[All, 2]]}] Transpose[{list1[[All, 1]], list1[[All, 2]] - list2[[All, 2]]}] Out[3]= {{1, 0}, {2, -2}, {3, -6}} Out[4]= {{1, 0}, {2, -2}, {3, -6}} Out[5]= {{1, 0}, {2, -2}, {3, -6}} Out[6]= {{1, 0}, {2, -2}, {3, -6}} Regards, Jean-Marc