5维空间5个点构建Voronoi图遇Scipy报错,咨询可行性与解决办法
关于高维Voronoi图构建的问题
我希望使用Voronoi图将5维空间划分为5个区域,但用Scipy无法实现,想知道是思路有误还是Scipy不支持该操作?
报错代码
from scipy.spatial import Voronoi import numpy as np dimension = 5 points = 5 points = np.random.uniform(-5, 5, (points, dimension)) voro = Voronoi(points)
报错信息翻译
QhullError: QH6214 qhull输入错误:点数量不足(5个),无法构建初始单纯形,需要7个点
问题解答
- 不是Scipy不支持高维Voronoi图,是你的点数量不符合高维空间的要求。在d维空间中,Qhull(Scipy的Voronoi底层依赖库)要求至少需要d+2个点才能构建有效的Voronoi图——d维空间构建初始单纯形需要d+1个点,但为了避免点集退化(比如点共超平面),Qhull额外要求多一个点,也就是d+2个。
- 你在5维空间中只提供了5个点,远低于5+2=7个的最低要求,所以触发了报错。
- 修正方法:把点的数量增加到至少7个即可,比如将代码里的
points = 5改成points = 7,重新运行就能正常构建Voronoi图。
内容的提问来源于stack exchange,提问作者ernest
相关产品推荐
相关产品推荐

