如何使用矩阵的一些非连续行和列形成子矩阵

时间:2011-06-06 21:40:19

标签: matrix wolfram-mathematica

我有一个10乘10的矩阵。我想从这个主矩阵形成一个子矩阵,使用除第1,第2和第8列和第1列以外的所有行和列。
我知道Part可以用来形成子矩阵,但是这些例子主要是关于仅使用连续的行和列来形成子矩阵。

2 个答案:

答案 0 :(得分:7)

如果这是你的矩阵:

tst = RandomInteger[10, {10, 10}];

这将解决手头的案例:

tst[[{3, 4, 5, 6, 7, 9, 10}, {3, 4, 5, 6, 7, 9, 10}]]

您可以使用Complement[Range[10],{1,2,8}]

代替显式列表

答案 1 :(得分:6)

这是另一种方式。

调用矩阵

test = Array[m, {10, 10}]

然后您的子矩阵

subTest = Nest[Delete[Transpose[#], {{1}, {2}, {8}}] &, test, 2]

与Leonid的方法比较

subTest == test[[#, #]] &[Complement[Range[10], {1, 2, 8}]]
(* True *)