You need to enable JavaScript to run this app. 基于numpy的二维闭合多边形面积向量化计算方法咨询
优惠活动
大模型
产品
解决方案
定价
更多

基于numpy的二维闭合多边形面积向量化计算方法咨询

实现方案

核心思路

基于鞋带公式的完全向量化实现,全程无Python层面的逐点遍历,所有运算由numpy底层完成,效率远高于手动循环。
假设输入的多边形顶点数组为poly,是shape为(n, 2)的numpy二维数组,每一行对应一个顶点的(x, y)坐标,支持顶点列表首尾不闭合的场景,numpy的循环偏移操作会自动处理最后一个顶点和第一个顶点的配对逻辑。

代码实现

import numpy as np

def polygon_area(poly):
    # 拆分x、y坐标数组
    x = poly[:, 0]
    y = poly[:, 1]
    # 循环偏移得到下一个顶点的坐标数组,为完全向量化操作
    x_next = np.roll(x, -1)
    y_next = np.roll(y, -1)
    # 向量化计算每一步乘积项,直接得到目标一维数组
    cross_terms = x * y_next - y * x_next
    # 计算最终面积
    area = 0.5 * np.abs(np.sum(cross_terms))
    return area, cross_terms

结果说明

  • 第一个返回值area就是多边形的面积,计算精度符合标准公式要求。
  • 第二个返回值cross_terms就是你需要的每一步乘积结果的一维numpy数组,全程通过向量运算生成,没有逐值赋值操作。

示例测试

以顶点为[[0,0], [0,1], [1,1], [1,0]]的单位正方形为例:

  • 计算得到的cross_terms为[0, -1, -1, 0]
  • 求和取绝对值后除以2,得到面积为1.0,结果正确。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.21 14:54:03