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

如何高效构建时间矩阵 优化Python对称矩阵重复计算问题

优化方案

因为时间矩阵是对称矩阵,满足times[i][j] = times[j][i],且对角线位置times[i][i]恒为0(同一个坐标的通行时长为0),所以我们只需要计算上三角区域(i<j)的结果,再同步赋值到对称的下三角位置即可,计算量直接减少近一半,坐标量级越大优化效果越明显。

优化后代码如下:

# 若已全局导入numpy可省略该行
import numpy as np

def time_matrix(coordinates):
    n = len(coordinates)
    times = np.zeros((n, n), dtype=float)
    # 仅遍历上三角区域,跳过无需计算的对角线
    for i in range(n):
        lon_i, lat_i = coordinates[i]
        for j in range(i + 1, n):
            lon_j, lat_j = coordinates[j]
            # 单次计算结果同时赋值给两个对称位置
            duration = get_time(lon_i, lat_i, lon_j, lat_j) / 60
            times[i][j] = duration
            times[j][i] = duration
    return times.tolist()

额外优化说明:

  • 提前提取每个坐标的经纬度赋值给局部变量,避免循环中重复索引列表,进一步提升运行速度
  • 如果后续get_time函数支持批量输入多组坐标对计算,可以结合numpy向量化操作完全去掉Python层的循环,运行效率会有量级提升

内容的提问来源于stack exchange,提问作者vojta

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.30 05:24:02