SciPy 教程

original icon
版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://www.knowledgedict.com/tutorial/scipy-spatial.html

Scipy空间


scipy.spatial包可以通过利用 Qhull 库来计算一组点的三角剖分,Voronoi 图和凸壳。此外,它包含用于最近邻点查询的 KDTree 实现以及用于各种度量中的距离计算的实用程序。

Delaunay 三角

下面来了解 Delaunay Triangulations 是什么以及如何在 SciPy 中使用。

什么是 Delaunay 三角?

在数学和计算几何中,对于平面中离散点的给定集合 P的 Delaunay 三角剖分是三角形 DT(P),使得 P中的任何点都不在 DT(P)中的任何三角形的外接圆内。

可以通过 SciPy 进行相同的计算。参考下面的一个例子。

from scipy.spatial import Delaunay
points = np.array([[0, 4], [2, 1.1], [1, 3], [1, 2]])
tri = Delaunay(points)
import matplotlib.pyplot as plt
plt.triplot(points[:,0], points[:,1], tri.simplices.copy())
plt.plot(points[:,0], points[:,1], 'o')
plt.show()

上述程序将生成以下输出 -

共面点

下面了解共面点是什么以及它们如何在 SciPy 中使用。

什么是共面点?

共平面点是三个或更多点位于同一平面上。回想一下,一个平面是平坦的表面,其在所有方向端延伸没有终点。它通常在数学教科书中显示为四面体

下面来看看如何在 SciPy 中使用它,参考下面的例子。

from scipy.spatial import Delaunay
points = np.array([[0, 0], [0, 1], [1, 0], [1, 1], [1, 1]])
tri = Delaunay(points)
print (tri.coplanar)

上述程序将生成以下输出 -

array([[4, 0, 3]], dtype = int32)

这意味着顶点4位于三角形顶点0和顶点3附近,但不包含在三角中。

凸壳

下面来了解什么是凸壳,以及它们如何在 SciPy 中使用。

什么是凸壳?

在数学中,欧几里德平面或欧几里德空间(或更一般地说,在实数上的仿射空间中)中的一组点X的凸包或凸包是包含X的最小凸集。

参考下面的例子来详细了解它 -

from scipy.spatial import ConvexHull
points = np.random.rand(10, 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-')
plt.show()

执行上面示例代码得到以下结果 -


SciPy,发音为Sigh Pi,是一个科学的 python 开源代码,在 BSD 许可下分发的库,用于执行数学,科学和工程计算。 ...
SciPy 是一个开放源码的 BSD 许可的数学,科学和工程库。SciPy 库依赖于 NumPy,它提供了便捷且快速的N维数组操作。构建 S ...
默认情况下,所有的 NumPy 函数都可以通过 SciPy 命名空间获得。当导入 SciPy 时,不需要显式导入 NumPy 函数。NumP ...
所有的统计函数都位于子包scipy.stats中,并且可以使用info(stats)函数获得这些函数的完整列表。随机变量列表也可以从stat ...
在本章中,我们将讨论插值,及如何在 SciPy 中使用它。 ...