我正在研究一个需要对飞机进行 Voronoi 镶嵌的问题。我认为在 Voronoi 细分中,每个点都将包含在 Voronoi 地图的唯一单元格中,例如
图中的点是黑点,每个点都包含在一个彩色单元格中。但是,在我的数据集上使用 scikit 实现,我得到的区域/单元的数量小于输入点的数量:
from scipy.spatial import Voronoi
import numpy as np
import json
# data is here: https://gist.github.com/duhaime/69ce65c6849708b31ba855d49d2812e6
a = np.array(json.load(open('umap.json')))
v = Voronoi(a)
print(a.shape) # prints (172502, 2)
print(len(v.regions)) # prints 169526
Voronoi 类的scikit 文档让我发现v.point_region
每个输入点都包含一个条目。的第i个成员表示a中第i个值所属v.point_region
的索引。v.regions
例如v.point_region[17]
= 34 表示a[17]
属于v.regions[34]
. 我没有意识到多个点可能属于同一个 Voronoi 地区!
这让我想到了我的问题:是否可以指定 Qhull 选项以确保每个点都隔离在 Voronoi 地图的不同单元格中?也就是说,我希望每个单元格都有一个独特的区域。其他人可以就这个问题提供的任何指示将不胜感激!