Как удалить строку и столбец по индексу в матрице?
Нужно удалить весь столбец/строку по индексу из матрицы (искал минимальный элемент главной диагонали). Теперь нужно удалить всю строку и столбец по индексу (индексом назвал minindex).
Искал в интернете как делать что-то подобное, но везде через numpy.
Должно получиться как-то так:
in:
[7, 9, 5]
[0, 6, 1]
[9, 6, 1]
out:
[7, 9]
[0, 6]
Ответы (2 шт):
Автор решения: Zhihar
→ Ссылка
ну во-первых задача решается легко в лоб:
matrix = [
[7, 9, 5],
[0, 6, 1],
[9, 6, 1],
]
i = 1
j = 2
res = []
for row in enumerate(matrix):
if row[0] != i:
new_row = []
for col in enumerate(row[1]):
if col[0] != j:
new_row.append(col[1])
res.append(new_row)
print(res)
а во-вторых приведённый выше алгоритм можно схлопнуть в одну строку, если желаете:
res = [[col[1] for col in enumerate(row[1]) if col[0] != j] for row in enumerate(matrix) if row[0] != i]
Автор решения: MaxU
→ Ссылка
Решение с испольованием list.pop, для того чтобы удалять элементы "на месте" (in place), т.е. не создавая копии матрицы / строк / столбцов:
idx_row, idx_col = 2, 2
# удаляем строку
_ = matrix.pop(idx_row)
# удаляем столбец
rows = len(matrix)
for i in range(rows):
_ = matrix[i].pop(idx_col)
результат:
print(matrix)
>>> [[7, 9], [0, 6]]