Дано: квадратная матрица и список, который представляет индекс удаляемых строк, а также одновременно представляет индекс удаляемых столбцов (это квадратная матрица, поэтому необходим только один список).
вывод: квадратная матрица, с ОБА убраны строки и столбцы в списке.
Допустим допустимый список индексов.
Это пример

Таким образом, вышеприведенное говорит об удалении второй и 4-й строк, а также второго и 4-го столбцов.
Я не мог понять, как использовать Delete[]
для одновременного удаления строк и столбцов, и я действительно не хотел составлять список для каждого отдельного индекса элемента, который я хочу удалить.
Но я мог бы использовать Delete
для удаления строк.
Это ниже, как я решил, я сначала удалил строки, затем транспонировал матрицу, а затем удалил строки новой матрицы (которые будут столбцами оригинала), а затем транспонировал результат обратно, чтобы получить то, что я хотел.
как это:
a = {{0, 5, 2, 3, 1, 0}, {4, 3, 2, 5, 1, 3}, {4, 1, 3, 5, 3, 2}, {4,
4, 1, 1, 1, 5}, {3, 4, 4, 5, 3, 3}, {5, 1, 4, 5, 2, 0}};
del = {{2}, {4}};
a = Delete[a, del];
a = Delete[Transpose[a], del];
(a = Transpose[a]) // MatrixForm
мой вопрос: есть ли более короткий способ использования Delete (или другого из этих трюков-экспертов), чтобы сделать это лучше?
спасибо