arrays - append 到表的行

标签 arrays append wolfram-mathematica

我有一个二维列表和一个一维列表。我想将一维列表作为 append 列插入到二维列表中。例如:

array = {{a,1,2},{b,2,3},{c,3,4}};
column = {x,y,z};

变成
final = {{a,1,2,x},{b,2,3,y},{c,3,4,z}};

我这样做不优雅:
Table[Insert[array[[i]], column[[i]], 4], {i, Length[array]}];

我的问题:在 Mathematica 中这样做的正确方法是什么?我认为它不需要我正在使用的循环。我的解决方案感觉很难看。

最佳答案

例如:

 Transpose@Append[Transpose@array, column]

你也可以 make 是一个像这样的函数:
 subListAppend = Transpose@Append[Transpose@#1, #2] &;
 subListAppend[array, column]

如果您必须经常使用它,这会更容易。当然,如果你想插入到末尾以外的任何地方,你可以使用 Insert[] .
subListInsert = Transpose@Insert[Transpose@#1, #2, #3] &;
subListInsert[array, column, 2]
--> {{a, x, 1, 2}, {b, y, 2, 3}, {c, z, 3, 4}}

编辑:由于强制性速度优化讨论已经开始,以下是使用 this 的一些结果和一个 10000x200 的数组:
ArrayFlatten@{{array, List /@ column}}:             0.020 s
Transpose@Append[Transpose@array, column]:          0.067 s
MapThread[Append, {array, column}]:                 0.083 s  
MapThread[Insert[#1, #2, 4] &, {array, column}]:    0.095 s
Map[Flatten, Flatten[{array, column}, {2}]]:        0.26 s
ConstantArray based solution:                       0.29 s
Partition[Flatten@Transpose[{array, column}], 4]:   0.48 s

获胜者是ArrayFlatten !

关于arrays - append 到表的行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4270802/

相关文章:

Python:如何合并两个列表,如带有 for 循环的 zip

c - 数组分离---C

javascript - 如何在 Javascript 中的 for 循环内 append html 模板?

javascript - 有没有办法切换 .append() jQuery 方法?

r - 制作 3d 表面

graphics - 图形中的凸包 - Mathematica

wolfram-mathematica - Mathematica中的照片马赛克: an example from 2008 doesn't work in Mathematica 8

javascript - UnderscoreJS 对象组列表

java - 我如何将一个数组中的困惑单词与 Java 中另一个数组中的正确拼写单词进行匹配?

c# - 制作一个随机整数数组