Я запускаю фрагмент кода, который должен получить (или сгенерировать) набор точек, выполнить триангуляцию для них, а затем найти кратчайший путь между двумя точками, все на python с использованием Scipy.
Таким образом, я получаю свои очки, запускаю алгоритм библиотеки Делоне (который дает мне триангуляцию) и передаю его в shortest_path
.
Проблема в том, что я получаю ошибку из библиотеки.А именно,
ValueError: график должен иметь два измерения
, начиная с csgraph_masked_from_dense
.Использование отладки или graph.ndim
подтверждает, что график действительно является 2D.Я даже вошел в код библиотеки, прямо перед csgraph_masked_from_dense
и проверил, и, действительно, ему дан 2D-график.
import scipy.spatial
import scipy.sparse
#
# tedious code imputing/generating m = list of lists with point coordinates
#
dela = scipy.spatial.Delaunay(m) # this works fine
paths = scipy.sparse.csgraph.shortest_path(dela) #this throws the following error
Traceback (последний вызов был последним):
Файл "C: \ Path \ вышеуказанный_код.py", строка 10, в paths = scipy.sparse.csgraph.shortest_path (dela)
Файл "_shortest_path.pyx", строка 157, в scipy.sparse.csgraph._shortest_path.shortest_path
Файл "C: \ Path \ Python \ Python37-32 \ lib \ site-packages \ scipy \ sparse \ csgraph_validation.py", строка 44, в validate_graph infinity_null = infinity_null)
Файл "_tools.pyx", строка 141, в scipy.sparse.csgraph._tools.csgraph_masked_from_dense
ValueError: граф должен иметь два измерения