I currently have a two lists. The first list contains independent variables $x$, and the second list contains dependent variables in the form of $\{\{f[1][x]\},\{f[2][x]\},...,\{f[n][x]\}\}$.
I want to combine them in the form
$$\{\{\{x1,f[1][x1]\},\{x2,f[1][x2]\},...,\{xn,f[1][xn]\}\},\{\{x1,f[2][x1]\},\{x2,f[2][x2]\},...,\{xn,f[2][xn]\}\},...,\{\{x1,f[n][x1]\},\{x2,f[n][x2]\},...,\{xn,f[n][xn]\}\}\}$$
...an easy format for ListPlot
.
For some example data:
a = Range[10];
b = a^2;
c = (a + 1/2)^2;
fa = {b,c};
Now one can easily do this with Table
:
Table[{a[[j]], fa[[i, j]]}, {i, Length[fa]}, {j, Length[c]}]
but knowing Mathematica's many functions I thought there might be an easier way. I tried this as well:
Transpose@MapThread[Tuples@{{#1}, #2} &, {a, Transpose@fa}]
but with the multiple Transpose
calls, I figured there would be a slight performance hit. And there was (2.854 vs 3.261 seconds for vectors with 1MM elements on my machine).
Is there an easier and more efficient way to combine these lists?
f[1][x1]
really meansf[[1,1]]
and notSubValues
? $\endgroup$MapThread[List, {a, #}] & /@ fa
will do the job. $\endgroup$