在Mathematica中删除矩阵列的简单方法

Phi*_*hil 8 operations wolfram-mathematica matrix

我试图删除mathematica中的矩阵.这样做的一种不优雅的方式就像我在下面所做的那样,即在新的矩阵中指定它

S = Table[
    Ss[[If[i < t, i, i + 1]]][[If[j < t, j, j + 1]]], {i, q}, {j, q}];  
Run Code Online (Sandbox Code Playgroud)

目标是消除行和列t.

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

Transpose[Delete[Transpose[Ss,t]]]  
Run Code Online (Sandbox Code Playgroud)

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

更一般地说,是否有一个Mathematica运算符,它可以像对行进行切片和切块一样容易,而无需使用转置?

Dr.*_*ius 14

我想你正在寻找:

Drop[Ss,{t},{t}]  
Run Code Online (Sandbox Code Playgroud)

时序:

ClearAll["Global`*"];

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

First@Timing[Drop[a, {2}, {2}]]
0.11
Run Code Online (Sandbox Code Playgroud)

First@Timing[Transpose@Delete[Transpose@Delete[a, 2], 2]]
0.5
Run Code Online (Sandbox Code Playgroud)

  • 这看起来适合删除行和列(我认为是请求的).要删除col,请执行Drop [mat,None,{colnum}]. (7认同)