gpt4 book ai didi

arrays - append 到表的行

转载 作者:行者123 更新时间:2023-12-03 23:05:03 25 4
gpt4 key购买 nike

我有一个二维列表和一个一维列表。我想将一维列表作为 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/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com