获取与Voronoi区域相关联的点(scipy.space.Voronoi)

2024-06-17 15:37:07 发布

您现在位置:Python中文网/ 问答频道 /正文

注意:aqueiros的{a1}虽然得票率较高,但不正确。尤其是这种说法“vor.regions总是在第一个索引”中有一个空数组,这不是真的。


我正在使用scipy.spatial.Voronoi函数生成一个简单的二维Voronoi细分。我使用点的随机二维分布(见下面的MCVE)。

我需要一种方法来遍历每个定义的区域(由scipy.spatial.Voronoi定义)并获得与之关联的点的坐标(即:所述区域包围的点)。

问题是有为N点定义的N+1区域(多边形),我不确定这意味着什么。

当到达最后一个区域时,MCVE将失败:

from scipy.spatial import Voronoi
import numpy as np

# Generate random data.
N = 10
x = [np.random.random() for i in xrange(N)]
y = [np.random.random() for i in xrange(N)]
points = zip(x, y)

# Obtain Voronoi regions.
vor = Voronoi(points)

# Loop through each defined region/polygon
for i, reg in enumerate(vor.regions):

    print 'Region:', i
    print 'Indices of vertices of Voronoi region:', reg
    print 'Associated point:', points[i], '\n'

我不明白的另一件事是,为什么存储了空的vor.regions?根据文件:

regions: Indices of the Voronoi vertices forming each Voronoi region. -1 indicates vertex outside the Voronoi diagram.

空区域是什么意思?


添加

我尝试了point_region属性,但显然我不明白它是如何工作的。它返回超出points列表范围的索引。例如:在上面的MCVE中,它将始终显示10个点列表的索引10,这显然超出了范围。


Tags: in区域for定义nprandomscipyregion