在Mathematica中添加第三列数据

时间:2013-08-22 01:10:46

标签: list wolfram-mathematica

我有一个非常大的数据表,如:

lista = {{2,8},{3,4},{5,2}..}

我想将x添加到每个元素中,因此它将是

lista ={{x,2,8},{x,3,4},{x,5,2}.....}

在我看来,这应该是相当微不足道的,但我无法找到解决方案。

我将不胜感激。

3 个答案:

答案 0 :(得分:4)

Join在这里很有用:

Map[Join[{x}, #] &, {{2, 8}, {3, 4}, {5, 2}}]

答案 1 :(得分:2)

这几乎与Appending to the rows of a table重复,并且在应该询问您的问题的专用网站上与Prepend 0 to sublists完全相同。在这些线程中提供了许多具有时序的方法,但这里有两个好的方法:

lista = {{2, 8}, {3, 4}, {5, 2}};

ArrayPad[lista, {{0, 0}, {1, 0}}]
{{0, 2, 8}, {0, 3, 4}, {0, 5, 2}}

或者:

ArrayFlatten @ {{0, lista}}
{{0, 2, 8}, {0, 3, 4}, {0, 5, 2}}

专用StackExchange站点:
enter image description here

答案 2 :(得分:0)

所以我有两种方法可以做到这一点;他们两个都很好,但我认为后者因技术原因更好;虽然我没有测试过他们的表现:

第一种方法:

lista = RandomInteger[{0, 10}, {10, 2}]
(*{{1, 3}, {0, 3}, {5, 5}, {4, 2}, {1, 7}, {3, 6}, {2, 2}, {3, 1}, {7, 6}, {8, 10}}*)
For[i = 1, i <= Length[lista], i++, PrependTo[lista[[i]], x]]
lista
(*{{x, 1, 3}, {x, 0, 3}, {x, 5, 5}, {x, 4, 2}, {x, 1, 7}, {x, 3, 6}, {x, 2, 2}, {x, 3, 1}, {x, 7, 6}, {x, 8, 10}}*)

第二种方法:

lista = RandomInteger[{0, 10}, {10, 2}]
(*{{0, 5}, {6, 0}, {4, 6}, {3, 2}, {8, 1}, {4, 9}, {0, 5}, {9, 10}, {3,0}, {8, 4}}*)
X = ConstantArray[x, Length[lista]];
lista = Transpose[Prepend[Transpose[lista], X]]
(*{{x, 0, 5}, {x, 6, 0}, {x, 4, 6}, {x, 3, 2}, {x, 8, 1}, {x, 4, 9}, {x,0, 5}, {x, 9,10}, {x, 3, 0}, {x, 8, 4}}*)