菜单
×
   ❮   
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 提供支持