選單
×
   ❮   
HTML CSS JAVASCRIPT SQL PYTHON JAVA PHP HOW TO W3.CSS C C++ C# BOOTSTRAP REACT MYSQL JQUERY EXCEL XML DJANGO NUMPY PANDAS NODEJS R TYPESCRIPT ANGULAR GIT POSTGRESQL MONGODB ASP AI GO KOTLIN SASS VUE DSA GEN AI SCIPY AWS CYBERSECURITY DATA SCIENCE
     ❯   

SciPy 空間資料


處理空間資料

空間資料是指在幾何空間中表示的資料。

例如:座標系統上的點。

我們在許多工中都會遇到空間資料問題。

例如:判斷一個點是否在邊界內。

SciPy 為我們提供了 scipy.spatial 模組,其中包含處理空間資料的函式。


三角剖分

多邊形的三角剖分是將多邊形劃分為多個三角形,以便我們可以計算多邊形的面積。

帶點的三角剖分是指建立由三角形組成的表面,其中所有給定的點至少是表面上任何三角形的一個頂點。

透過點生成這些三角剖分的一種方法是 Delaunay() 三角剖分。

示例

根據以下點建立三角剖分

import numpy as np
from scipy.spatial import Delaunay
import matplotlib.pyplot as plt

points = np.array([
  [2, 4],
  [3, 4],
  [3, 0],
  [2, 2],
  [4, 1]
])

simplices = Delaunay(points).simplices

plt.triplot(points[:, 0], points[:, 1], simplices)
plt.scatter(points[:, 0], points[:, 1], color='r')

plt.show()

結果

自己動手試一試 »

注意: simplices 屬性建立了對三角形表示法的泛化。



凸包

凸包是覆蓋所有給定點的最小多邊形。

使用 ConvexHull() 方法建立凸包。

示例

為以下點建立凸包

import numpy as np
from scipy.spatial import ConvexHull
import matplotlib.pyplot as plt

points = np.array([
  [2, 4],
  [3, 4],
  [3, 0],
  [2, 2],
  [4, 1],
  [1, 2],
  [5, 0],
  [3, 1],
  [1, 2],
  [0, 2]
])

hull = ConvexHull(points)
hull_points = hull.simplices

plt.scatter(points[:,0], points[:,1])
for simplex in hull_points
  plt.plot(points[simplex,0], points[simplex,1], 'k-')

plt.show()

結果

自己動手試一試 »

KDTrees

KDTrees 是一種資料結構,經過最佳化,可用於最近鄰查詢。

例如:在一組點中使用 KDTrees,我們可以有效地詢問哪些點離給定點最近。

KDTree() 方法返回一個 KDTree 物件。

query() 方法返回到最近鄰的距離以及鄰居的位置。

示例

查詢點 (1,1) 的最近鄰

from scipy.spatial import KDTree

points = [(1, -1), (2, 3), (-2, 3), (2, -3)]

kdtree = KDTree(points)

res = kdtree.query((1, 1))

print(res)

結果

 (2.0, 0)

自己動手試一試 »

距離矩陣

資料科學中有許多距離度量用於查詢兩點之間的各種距離,例如歐幾里得距離、餘弦距離等。

兩個向量之間的距離不僅可以是它們之間的直線長度,還可以是它們與原點的角度,或者所需的單位步數等。

許多機器學習演算法的效能在很大程度上取決於距離度量。例如,“K 最近鄰”或“K 均值”等。

讓我們看一些距離度量


歐幾里得距離

查詢給定點之間的歐幾里得距離。

示例

from scipy.spatial.distance import euclidean

p1 = (1, 0)
p2 = (10, 2)

res = euclidean(p1, p2)

print(res)

結果

 9.21954445729

自己動手試一試 »

Cityblock 距離(曼哈頓距離)

這是使用 4 個移動方向計算的距離。

例如:我們只能向上、向下、向右或向左移動,不能斜著移動。

示例

查詢給定點之間的 cityblock 距離

from scipy.spatial.distance import cityblock

p1 = (1, 0)
p2 = (10, 2)

res = cityblock(p1, p2)

print(res)

結果

 11

自己動手試一試 »

餘弦距離

是兩點 A 和 B 之間的餘弦角度的值。

示例

查詢給定點之間的餘弦距離

from scipy.spatial.distance import cosine

p1 = (1, 0)
p2 = (10, 2)

res = cosine(p1, p2)

print(res)

結果

 0.019419324309079777

自己動手試一試 »

漢明距離

是兩個位不同的位數比例。

這是一種測量二進位制序列距離的方法。

示例

查詢給定點之間的漢明距離

from scipy.spatial.distance import hamming

p1 = (True, False, True)
p2 = (False, True, True)

res = hamming(p1, p2)

print(res)

結果

 0.666666666667

自己動手試一試 »


×

聯絡銷售

如果您想將 W3Schools 服務用於教育機構、團隊或企業,請傳送電子郵件給我們
sales@w3schools.com

報告錯誤

如果您想報告錯誤,或想提出建議,請傳送電子郵件給我們
help@w3schools.com

W3Schools 經過最佳化,旨在方便學習和培訓。示例可能經過簡化,以提高閱讀和學習體驗。教程、參考資料和示例會不斷審查,以避免錯誤,但我們無法保證所有內容的完全正確性。使用 W3Schools 即表示您已閱讀並接受我們的使用條款Cookie 和隱私政策

版權所有 1999-2024 Refsnes Data。保留所有權利。W3Schools 由 W3.CSS 提供支援