使用列表迭代邻接矩阵

Iterate through an adjacency matrix with a list

所以我有一个 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...]

列表项指向 row/column 个数字。

所以第二行第四列是:

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 如下(或 itertools.pairwise 而不是 python 3.10+ 中的 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