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

Sre*_*eya 5 wolfram-mathematica matrix

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

Leo*_*rin 7

如果这是你的矩阵:

tst = RandomInteger[10, {10, 10}];
Run Code Online (Sandbox Code Playgroud)

这将成为手头案例的诀窍:

tst[[{3, 4, 5, 6, 7, 9, 10}, {3, 4, 5, 6, 7, 9, 10}]]
Run Code Online (Sandbox Code Playgroud)

您可以使用而不是显式列表Complement[Range[10],{1,2,8}].


Sim*_*mon 6

这是另一种方式.

打电话给你的矩阵

test = Array[m, {10, 10}]
Run Code Online (Sandbox Code Playgroud)

然后你的子矩阵是

subTest = Nest[Delete[Transpose[#], {{1}, {2}, {8}}] &, test, 2]
Run Code Online (Sandbox Code Playgroud)

与列昂尼德的方法比较

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

  • @belisarius:我相信你的结果,这会让我天真吗? (3认同)