用列表遍历邻接矩阵



所以我有一个n x n邻接矩阵,n x n NumPy数组,其中第I行和第j列是第I个和第j个城市之间的距离。

我还有一份清单,按照特定的顺序,我必须访问城市,并将距离加在一起。

m = matrix
i = matrix_row
j = matrix_column
list = [1, 3, 4, 14, 26, 23...]

列表项指向行/列编号。

所以第二行第四列是:

distance = m[3][14]
d = 124.9

我想把它们添加为:

m[list[0]][list[1]] + m[list[1]][list[2]] + m[list[2]][list[3]]... and so on

我如何迭代?

您可以按如下方式使用zipsum(或者在python 3.10+中使用itertools.pairwise而不是zip(:

import numpy as np
m = np.reshape(range(9), (3, 3)) # an example matrix
print(m)
# [[0 1 2]
#  [3 4 5]
#  [6 7 8]]
lst = [0, 2, 1, 0]
total_dist = sum(m[i][j] for i, j in zip(lst, lst[1:]))
print(total_dist) # 12

最新更新