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

发布于 2024-11-14 13:30:38 字数 111 浏览 3 评论 0原文

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

I have a 10 by 10 matrix. I want to form a sub-matrix from this main matrix, using all the rows and columns except the 1st, 2nd and 8th columns and rows.
I know Part can be used to form the sub-matrix, but the examples are mostly about forming the sub-matrix using consecutive rows and columns only.

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

擦肩而过的背影 2024-11-21 13:30:38

如果这是您的矩阵:

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}] 而不是显式列表。

If this is your matrix:

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

This will do the trick for the case at hand:

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

Instead of explicit list, you could use Complement[Range[10],{1,2,8}].

歌入人心 2024-11-21 13:30:38

这是另一种方法。

调用你的矩阵

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

然后你的子矩阵是

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

与Leonid的方法比较

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

Here's another way.

Call your matrix

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

Then your sub matrix is

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

Compare with Leonid's method

subTest == test[[#, #]] &[Complement[Range[10], {1, 2, 8}]]
(* True *)
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文