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

基于顶点索引数组向量化计算边长度数组

向量化计算边长度的实现方法

核心思路是利用NumPy的索引广播特性,批量提取边的两端顶点坐标,计算坐标差后用np.linalg.norm一次性求出所有边的长度,全程无需循环。

步骤示例

  1. 准备测试数据
import numpy as np

# 3×N的顶点坐标矩阵(N为顶点数,行对应x/y/z轴)
vertices = np.array([
    [0, 1, 3, 5],  # x坐标行
    [0, 2, 4, 6],  # y坐标行
    [0, 3, 5, 7]   # z坐标行
])

# 2×M的边索引数组(M为边数,行对应起点/终点索引)
edges = np.array([
    [0, 1, 2],  # 所有边的起点索引
    [1, 2, 3]   # 所有边的终点索引
])
  1. 批量提取边的两端坐标
    通过索引直接取出所有边的起点和终点坐标,得到两个3×M的矩阵:
start_coords = vertices[:, edges[0]]  # 起点坐标矩阵(每列对应一条边的起点)
end_coords = vertices[:, edges[1]]    # 终点坐标矩阵(每列对应一条边的终点)
  1. 向量化计算边长度
    计算坐标差后,指定axis=0对每一列(单条边的向量)求欧氏范数:
# 计算每条边的坐标差向量
vec_diff = end_coords - start_coords

# 批量计算所有边的长度
edge_lengths = np.linalg.norm(vec_diff, axis=0)

输出结果

print(edge_lengths)
# 输出:[1.73205081 2.82842712 2.82842712]

这种方式完全依赖NumPy的底层向量化运算,比Python循环效率高几个数量级,尤其适合处理大规模的顶点和边数据。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.08 17:32:05