【发布时间】:2015-08-14 23:02:01
【问题描述】:
我正在使用 scipy.spatial.Voronoi 函数生成一个简单的 2D Voronoi 细分。我使用点的随机 2D 分布(参见下面的 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:形成每个 Voronoi 区域的 Voronoi 顶点的索引。 -1 表示 Voronoi 图之外的顶点。
空白区域是什么意思?
添加
我尝试了point_region 属性,但显然我不明白它是如何工作的。它返回points 列表范围之外的索引。例如:在上面的 MCVE 中,它总是会显示一个索引 10 用于 10 个点的列表,这显然超出了范围。
【问题讨论】:
-
Voronoi实例有一个point_region属性,它完全符合您的要求。 Read the docs! -
@Jaime 我确实尝试过该属性,请查看我添加到问题中的内容。