Вот быстрый способ сделать это с помощью numpy:
В следующем коде d
- это пустой массив расстояний, как в кадре данных, а n
- количество городов.
d = np.array([1146.72, 220, 340])
n = 3
upperIndices = np.triu_indices(n, k=1)
lowerIndices = np.tril_indices(n, k=-1)
distanceMatrix = np.zeros((n,n))
distanceMatrix[upperIndices] = d
distanceMatrix[lowerIndices] = d
Результат:
array([[ 0. , 1146.72, 220. ],
[1146.72, 0. , 340. ],
[ 220. , 340. , 0. ]])
Обратите внимание, что это будет работать только в том случае, если список расхождений упорядочен правильно.