Как удалить столбец и строки в матрице симметрии c - PullRequest
2 голосов
/ 15 апреля 2020

У меня есть симметричная c матрица смежности, и я хочу уменьшить ее, удалив строки и столбцы в соответствии с их суммой. Я написал эту функцию:

def reduce(matrix, min_degree):
    rem = np.where(matrix.sum(axis=0) < min_degree)

    matrix = np.delete(matrix, rem, axis=0)
    matrix = np.delete(matrix, rem, axis=1)

    return matrix

Тем не менее, делая это:

adj = reduce(adj, 10)
print(min(adj.sum(axis=0)))

Я продолжаю получать значения меньше 10. Как я могу это исправить?

1 Ответ

3 голосов
/ 15 апреля 2020

Это не проблема, что вы получаете строки с суммой меньше 10. См. Следующий пример: Если массив adj равен:

array([[1, 1, 1, 1],    # sum 4
       [1, 2, 6, 1],    # sum 10
       [1, 6, 1, 4],    # sum 12
       [1, 1, 4, 5]])   # sum 11

После запуска вашей функции reduce(adj, 10) вы получите:

array([[2, 6, 1],       # sum 9
       [6, 1, 4],       # sum 10
       [1, 4, 5]])      # sum 10

У которого теперь есть новые строки / столбцы, сумма которых не превышает 10. Если вы хотите продолжить удаление до тех пор, пока у вас есть такие строки, вы можете вызвать функцию в любом другом месте. oop пока условие все еще выполняется.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...