本文简要介绍 python 语言中 scipy.spatial.ConvexHull
的用法。
用法:
class scipy.spatial.ConvexHull(points, incremental=False, qhull_options=None)#
N维的凸包。
- points: 浮点数数组,形状(npoints,ndim)
用于构造凸包的点的坐标
- incremental: 布尔型,可选
允许增量添加新点。这会占用一些额外的资源。
- qhull_options: str,可选
传递给 Qhull 的其他选项。有关详细信息,请参阅 Qhull 手册。 (默认值:“Qx” 用于 ndim > 4,否则为“”)选项 “Qt” 始终启用。
- QhullError
当 Qhull 遇到错误条件时引发,例如在未启用解决选项时出现几何退化。
- ValueError
如果将不兼容的数组作为输入给出,则引发。
参数 ::
抛出 ::
注意:
使用 Qhull library 计算凸包。
参考:
例子:
一组随机点的凸包:
>>> from scipy.spatial import ConvexHull, convex_hull_plot_2d >>> import numpy as np >>> rng = np.random.default_rng() >>> points = rng.random((30, 2)) # 30 random points in 2-D >>> hull = ConvexHull(points)
绘制它:
>>> import matplotlib.pyplot as plt >>> plt.plot(points[:,0], points[:,1], 'o') >>> for simplex in hull.simplices: ... plt.plot(points[simplex, 0], points[simplex, 1], 'k-')
我们也可以直接使用船体的顶点,对于 2-D,这些顶点保证是逆时针顺序:
>>> plt.plot(points[hull.vertices,0], points[hull.vertices,1], 'r--', lw=2) >>> plt.plot(points[hull.vertices[0],0], points[hull.vertices[0],1], 'ro') >>> plt.show()
从一点可见的刻面:
创建一个正方形并在正方形上方添加一个点。
>>> generators = np.array([[0.2, 0.2], ... [0.2, 0.4], ... [0.4, 0.4], ... [0.4, 0.2], ... [0.3, 0.6]])
使用 QG 选项调用 ConvexHull。 QG4 表示计算不包括点 4 的船体部分,表示从点 4 可见的面。
>>> hull = ConvexHull(points=generators, ... qhull_options='QG4')
“good” 数组指示从点 4 可以看到哪些方面。
>>> print(hull.simplices) [[1 0] [1 2] [3 0] [3 2]] >>> print(hull.good) [False True False False]
现在绘制它,突出显示可见的方面。
>>> fig = plt.figure() >>> ax = fig.add_subplot(1,1,1) >>> for visible_facet in hull.simplices[hull.good]: ... ax.plot(hull.points[visible_facet, 0], ... hull.points[visible_facet, 1], ... color='violet', ... lw=6) >>> convex_hull_plot_2d(hull, ax=ax) <Figure size 640x480 with 1 Axes> # may vary >>> plt.show()
- points: ndarray of double, shape (npoints, ndim)
输入点的坐标。
- vertices: 整数的ndarray,形状(nvertices,)
形成凸包顶点的点的索引。对于二维凸包,顶点按逆时针顺序排列。对于其他维度,它们按输入顺序排列。
- simplices: 整数的ndarray,形状(nfacet,ndim)
形成凸包的单纯面的点的索引。
- neighbors: 整数的ndarray,形状(nfacet,ndim)
每个方面的相邻方面的索引。第 k 个邻居与第 k 个顶点相对。 -1 表示没有邻居。
- equations: ndarray of double, shape (nfacet, ndim+1)
[正常,偏移] 形成刻面的超平面方程(更多信息请参见Qhull documentation)。
- coplanar: int,形状的ndarray(ncoplanar,3)
共面点的索引以及最近面和最近顶点索引的相应索引。共面点是由于数值精度问题而未包含在三角剖分中的输入点。
如果未指定选项“Qc”,则不计算此列表。
- good: bool 或 None 的 ndarray
一维布尔数组,指示哪些方面是好的。与计算好的方面的选项一起使用,例如QGn 和QG-n。好的刻面定义为从点 n 可见 (n) 或不可见 (-n) 的刻面,其中 n 是 ‘points’ 中的第 n 个点。 ‘good’ 属性可以用作‘simplices’ 的索引,以返回好的(可见的)方面:单纯形[good]。刻面仅从船体外部可见,共面性和退化都不算作可见性的情况。
如果未指定 “QGn” 或 “QG-n” 选项,则返回 None。
- area: 浮点数
输入维度 > 2 时凸包的表面积。当输入
points
为二维时,这是凸包的周长。- volume: 浮点数
输入维度 > 2 时凸包的体积。当输入
points
为二维时,这是凸包的面积。
属性 ::
相关用法
- Python SciPy spatial.tsearch用法及代码示例
- Python SciPy spatial.Voronoi用法及代码示例
- Python SciPy spatial.procrustes用法及代码示例
- Python SciPy spatial.SphericalVoronoi用法及代码示例
- Python SciPy spatial.minkowski_distance用法及代码示例
- Python SciPy spatial.HalfspaceIntersection用法及代码示例
- Python SciPy spatial.voronoi_plot_2d用法及代码示例
- Python SciPy spatial.minkowski_distance_p用法及代码示例
- Python SciPy spatial.geometric_slerp用法及代码示例
- Python SciPy spatial.distance_matrix用法及代码示例
- Python SciPy spatial.convex_hull_plot_2d用法及代码示例
- Python SciPy spatial.Delaunay用法及代码示例
- Python SciPy spatial.delaunay_plot_2d用法及代码示例
- Python SciPy sparse.isspmatrix用法及代码示例
- Python SciPy sparse.save_npz用法及代码示例
- Python SciPy sparse.issparse用法及代码示例
- Python SciPy sparse.coo_matrix用法及代码示例
- Python SciPy sparse.isspmatrix_csc用法及代码示例
- Python SciPy sparse.isspmatrix_csr用法及代码示例
- Python SciPy sparse.tril用法及代码示例
- Python SciPy sparse.coo_array用法及代码示例
- Python SciPy sparse.dia_array用法及代码示例
- Python SciPy sparse.bmat用法及代码示例
- Python SciPy sparse.hstack用法及代码示例
- Python SciPy sparse.rand用法及代码示例
注:本文由纯净天空筛选整理自scipy.org大神的英文原创作品 scipy.spatial.ConvexHull。非经特殊声明,原始代码版权归原作者所有,本译文未经允许或授权,请勿转载或复制。