从列表中删除特定数据 - Python

时间:2013-02-09 21:21:32

标签: python arrays

我有一个四边形阵列,每个项目包括图像中正方形的四个坐标。 例如:

[
    array([
        [[599, 1]],
        [[173, 109]],
        [[202, 252]],
        [[445, 314]]
    ]),
    array([
        [[1, 1]],
        [[1, 126]],
        [[57, 104]],
        [[48, 19]]
    ])
]

我希望程序找到数组中最高的方块。

我是Python的新手,所以我很乐意得到一个明确的答案:)

1 个答案:

答案 0 :(得分:1)

正如评论中所指出的,四边形的“质心”有多种定义。我假设vertex centroid - 其坐标显然是4个角坐标的算术平均值,因此很容易计算。

quadrilaterals = [array([[599, 1]],
                        [[173, 109]],
                        [[202, 252]],
                        [[445, 314]]),
                  array([[1, 1]],
                        [[1, 126]],
                        [[57, 104]],
                        [[48, 19]])]

def centroid_y(polygon):
    return polygon.mean(0)[1]   # assuming numpy arrays

然后使用质心作为关键字获得最大值。

print max(quadrilaterals, key=centroid_y)