【问题标题】:Simple way to delete a matrix column in Mathematica在 Mathematica 中删除矩阵列的简单方法
【发布时间】:2011-03-13 12:31:38
【问题描述】:

我正在尝试删除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 运算符可以像对行进行切片和切块一样容易,而不需要转置?

【问题讨论】:

    标签: matrix wolfram-mathematica operations


    【解决方案1】:

    我想你正在寻找:

    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
    

    【讨论】:

    • 这看起来很适合删除一行和一列(我认为这是所要求的)。要仅删除一个 col,请执行 Drop[mat,None,{colnum}]。
    • @Daniel 谢谢。重新阅读问题的最后一部分,我想知道您的评论是否是 OP 所追求的。不过不确定。
    • @belisarius,@daniel,非常感谢。由于字符限制,我提出了一个新问题来扩展我在这里提出的问题
    • 检查 here 是否有一个非常好的 wreach 方法
    猜你喜欢
    • 2020-01-25
    • 1970-01-01
    • 1970-01-01
    • 2013-07-22
    • 1970-01-01
    • 2014-09-21
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多