使用列表迭代邻接矩阵
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
我如何遍历它?
您可以使用 zip
和 sum
如下(或 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
所以我有一个 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
我如何遍历它?
您可以使用 zip
和 sum
如下(或 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