Menu
×
   ❮   
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()

结果

自己试一试 »

KD树

KD树是一种针对最近邻查询优化的数据结构。

例如,在一组点中使用 KD 树,我们可以有效地询问哪些点最靠近某个给定点。

KDTree() 方法返回一个 KD 树对象。

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

自己试一试 »

城市街区距离(曼哈顿距离)

是使用 4 个自由度计算的距离。

例如,我们只能移动:上、下、右或左,不能对角移动。

示例

找到给定点之间的城市街区距离

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

自己试一试 »


×

Contact Sales

If you want to use W3Schools services as an educational institution, team or enterprise, send us an e-mail:
[email protected]

Report Error

If you want to report an error, or if you want to make a suggestion, send us an e-mail:
[email protected]

W3Schools is optimized for learning and training. Examples might be simplified to improve reading and learning. Tutorials, references, and examples are constantly reviewed to avoid errors, but we cannot warrant full correctness of all content. While using W3Schools, you agree to have read and accepted our terms of use, cookie and privacy policy.

Copyright 1999-2024 by Refsnes Data. All Rights Reserved. W3Schools is Powered by W3.CSS.