Простой способ удалить матричный столбец в Mathematica - PullRequest
8 голосов
/ 13 марта 2011

Я пытаюсь удалить обе матрицы в 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, который позволяет с лёгкостью разрезать и нарезать кубики столбцов матрицы, как это делается для строк, не прибегая к транспонированию?

1 Ответ

14 голосов
/ 13 марта 2011

Я думаю, что вы ищете:

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
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...