我试图删除mathematica中的矩阵。一种不太优雅的方式就像我在下面所做的那样,即在一个新的矩阵中指定它
S = Table[
Ss[[If[i < t, i, i + 1]]][[If[j < t, j, j + 1]]], {i, q}, {j, q}];
其目标是消除行和列t。
确实删除一行很容易删除[Ss,t]。对于列列,我想我可以做
Transpose[Delete[Transpose[Ss,t]]]
我主要担心的是以尽可能快的方式执行此操作。
更一般地说,是否有一个Mathematica运算符可以像处理行一样轻松地对矩阵列进行切片和切块而不需要转置?
答案 0 :(得分: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