scipy.spatial软件包可以利用Qhull库来计算一组点的三角剖分, Voronoi图和凸包。同样, 它包含用于最近邻点查询的KDTree实现以及用于各种度量中距离计算的实用程序。
- Delaunay三角剖分
圆的中心由三个点或三角形的半径确定。让我们考虑以下示例:
from scipy.spatial import Delaunayimport numpy as npimport matplotlib.pyplot as pltpoints = np.array([[0, 3], [1, 1.1], [1, 4], [1, 2]])triang = Delaunay(points)plt.triplot(points[:, 0], points[:, 1], triang.simplices.copy())plt.plot(points[:, 0], points[:, 1], 'o')plt.show()
输出
文章图片
共平面点
共面点是指同一平面上存在三个以上的点。该平面是平坦的表面, 可以在所有方向上无止境地扩展。让我们考虑以下示例:
from scipy.spatial import Delaunaypoints = np.array([[0, 0], [0, 1], [1, 0], [1, 1], [1, 1]])tri = Delaunay(points)print(tri.coplanar)
输出
[[4 0 3]]
在上面的输出中, 三角剖分不包括点4;它存在于三角形0和顶点3附近。
凸包
在数学中, 欧几里得平面或欧几里得空间中的一组点X的凸包或凸包络。它是包含X的最小凸集。让我们考虑以下示例:
from scipy.spatial import ConvexHullimport matplotlib.pyplot as pltpoints = np.random.rand(10, 2) # 30 random points in 2-Dhull = ConvexHull(points)plt.plot(points[:, 0], points[:, 1], 'o')for simplex in hull.simplices:plt.plot(points[simplex, 0], points[simplex, 1], 'k-')plt.show()
输出
文章图片
Scipy cdist
SciPy提供了space.distance.cdist, 用于计算两个输入集合中的每对之间的距离。以下是调用约定:
1. Y = cdist(XA, XB, ‘ 欧几里得’ )
它使用欧几里得距离(2-范数)作为点之间的距离度量来计算m个点之间的距离。这些点在矩阵X中组织为m个n维行向量。
2. Y = cdist(XA, XB, ‘ minkowski’ , p = 2。)
它使用Minkowski距离|| u?v || p(p范数)计算距离, 其中p?1。
3. Y = cdist(XA, XB, ” cityblock” )
【SciPy spatial模块(实现三角剖分)】它计算点之间的城市街区或曼哈顿距离。
推荐阅读
- SciPy数据统计(stats模块的使用)
- SciPy spectrogram(计算频谱图)
- SciPy图像处理(ndimage模块的详细使用图解)
- SciPy优化optimize模块用法
- SciPy稀疏矩阵介绍和示例
- SciPy插值运算如何实现()
- SciPy正交距离回归(ODR)介绍和用法
- SciPy如何计算线性代数(这里有详细解释————)
- SciPy安装详细步骤图解