You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何遍历NumPy邻接矩阵并按指定城市列表累加路径总距离

实现方案

首先注意不要使用list作为变量名,会覆盖Python内置的列表类型,建议将访问顺序列表命名为visit_order这类自定义名称。

1. 显式遍历实现(符合要求的遍历写法)

import numpy as np

# 此处替换为你自己的n×n邻接矩阵
m = np.array([[...], [...]])
# 此处替换为你自己的城市访问顺序列表
visit_order = [1, 3, 4, 14, 26, 23]

total_distance = 0
# 遍历到列表倒数第二个元素即可,每次取相邻两个城市对应的矩阵值累加
for i in range(len(visit_order) - 1):
    from_city = visit_order[i]
    to_city = visit_order[i + 1]
    total_distance += m[from_city][to_city]

print(total_distance)

逻辑说明:假设访问列表长度为k,循环会执行k-1次,刚好对应m[visit_order[0]][visit_order[1]] + m[visit_order[1]][visit_order[2]] + ... + m[visit_order[k-2]][visit_order[k-1]]的求和规则,完全匹配需求。

2. 更高效的NumPy向量化实现(无显式遍历,性能更高)

如果处理的矩阵和访问路径规模较大,推荐用NumPy高级索引特性直接计算,代码更简洁,运行效率也远高于Python层的循环:

total_distance = m[visit_order[:-1], visit_order[1:]].sum()

内容的提问来源于stack exchange,提问作者Ádám Szalóczi

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.25 02:54:06