我有一个二维列表和一维列表.我想将1D列表作为附加列插入到2D列表中.例如:
array = {{a,1,2},{b,2,3},{c,3,4}};
column = {x,y,z};
Run Code Online (Sandbox Code Playgroud)
变
final = {{a,1,2,x},{b,2,3,y},{c,3,4,z}};
Run Code Online (Sandbox Code Playgroud)
我做得非常好:
Table[Insert[array[[i]], column[[i]], 4], {i, Length[array]}];
Run Code Online (Sandbox Code Playgroud)
我的问题:在Mathematica中这样做的正确方法是什么?我不认为它需要我正在使用的循环.我的解决方案感觉很难看.
好吧,想象一下我有这个矩阵:{{1,2},{2,3}},而我宁愿拥有{{4,1,2},{5,2,3}}.也就是说,我在列中添加了一列.有一个简单的方法吗?
我最好的建议是:
PrependColumn[vector_List, matrix_List] :=
Outer[Prepend[#1, #2] &, matrix, vector, 1]
Run Code Online (Sandbox Code Playgroud)
但它会混淆代码并不断需要加载越来越多的代码.这不是以某种方式建造的吗?
我是Mathematica的新手,我在向数据表中添加列时遇到了严重的故障.我在Vista中运行Mathematica 7.在问这里之前我花了很多时间做RFD.
我有一个包含三列五行的数据表(mydata).我正在尝试向表中添加两个包含五个元素的列表(有效地向数据表添加两列).
这非常有效:
Table[AppendTo[mydata[[i]],myfirstlist[[i]]],{i,4}]
Run Code Online (Sandbox Code Playgroud)
打印出表格:mydata // TableForm显示添加的列.
但是,当我尝试添加我的第二个列表时
Table[AppendTo[mydata[[i]],mysecondlist[[i]]],{i,5}]
Run Code Online (Sandbox Code Playgroud)
无论是数学崩溃(!)或者,我得到的转换Part::partw和Part::spec错误说第5部分不存在.
但是,在所有错误消息(如果Mathematica没有崩溃)之后,再次打印出数据表:mydata // TableForm显示数据表有五列,就像我想要的那样.TableForm修订数据表上的所有格式选项都可以正常工作.
谁能告诉我我做错了什么?提前致谢!
给定:方形矩阵和表示要删除的行的索引的列表,它还同时表示要删除的列的索引(它是方形矩阵,因此只需要一个列表).
输出:方形矩阵,删除列表中的行和列列.
假设有效的索引列表.
这是一个例子

所以上面说的是删除第二行和第四行,以及第二和第四列.
我Delete[]无法想象如何使用同时删除行和列,我真的不想列出我想删除的每个单独的元素索引.
但我可以Delete用来删除行.
下面我解决了它,我首先删除了行,然后转换了矩阵,然后删除了新矩阵的行(这将是原始列的行),然后将结果转换回来获得我想要的.
像这样:
a = {{0, 5, 2, 3, 1, 0}, {4, 3, 2, 5, 1, 3}, {4, 1, 3, 5, 3, 2}, {4,
4, 1, 1, 1, 5}, {3, 4, 4, 5, 3, 3}, {5, 1, 4, 5, 2, 0}};
del = {{2}, {4}};
a = Delete[a, del];
a = Delete[Transpose[a], del];
(a = Transpose[a]) // MatrixForm
Run Code Online (Sandbox Code Playgroud)
我的问题:是否有更短的方式使用Delete(或其他一个专家技巧)以更好的方式做到这一点?
谢谢