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()

執行上面範例程式碼得到以下結果 -