Я напишу пример, чтобы уточнить, что я имею в виду:
test = nx.Graph()
test.add_edge(0,3)
test.add_edge(1,2)
test.nodes
Out: NodeView((0, 3, 1, 2))
nx.to_numpy_matrix(test)
Out: matrix([[0., 1., 0., 0.],
[1., 0., 0., 0.],
[0., 0., 0., 1.],
[0., 0., 1., 0.]])
Таким образом, если вы посмотрите на приведенный выше пример, вы увидите, что networkx упорядочивает узлы в том порядке, в котором вы добавляете их в график.
Проблема в том, что мне нужно, чтобы моя матрица смежности упорядочивалась по номеру, заданному для узла. Итак, для моего примера, окончательная матрица должна быть:
Out: matrix([[0., 0., 0., 1.],
[0., 0., 1., 0.],
[0., 1., 0., 0.],
[1., 0., 0., 0.]])
Более того, я читаю график из файла, представляющего собой список ребер.
В конце концов, моя реальная проблема заключается в том, что индексы выходной матрицы отличаются от индексов на графике. Так что для моего примера, если я хочу проверить узел 1 в матрице, я должен написать матрицу [2], поскольку это третий узел, который я записываю в списке ребер.
Кто-нибудь знает, как я могу это исправить?