8

我正在尝试删除mathematica中的两个矩阵。一种不优雅的做法就像我在下面所做的那样,即将它在一个新矩阵中指定为

S = Table[
    Ss[[If[i < t, i, i + 1]]][[If[j < t, j, j + 1]]], {i, q}, {j, q}];  

其中目标是消除行和列 t。

确实删除一行很容易 Delete[Ss,t]. 对于专栏专栏,我想我可以做

Transpose[Delete[Transpose[Ss,t]]]  

我主要关心的是以尽可能最快的方式执行它。

更一般地说,是否有一个 Mathematica 运算符可以像对行一样轻松地对矩阵列进行切片和切块,而无需求助于转置?

4

1 回答 1

14

我认为您正在寻找:

Drop[Ss,{t},{t}]  

时间:

ClearAll["Global`*"];

First@Timing[a = RandomInteger[1000, {5000, 5000}];]
0.34

First@Timing[Drop[a, {2}, {2}]]
0.11

尽管

First@Timing[Transpose@Delete[Transpose@Delete[a, 2], 2]]
0.5
于 2011-03-13T14:42:43.117 回答