Python 教程

Python 教程 Python 简介 Python 历史 Python 下载安装 Python 入门 Python 语法 Python 注释 Python 变量 Python 数据类型 Python 数值类型 Python 类型转换 Python 字符串 Python 布尔值 Python 运算符 Python 列表 Python 元组 Python 集合 Python 字典 Python If...Else Python While 循环 Python For 循环 Python 函数 Python Lambda Python 数组 Python 类和对象 Python 继承 Python 迭代 Python 作用域 Python 模块 Python 日期时间 Python 数学运算 Python JSON Python 正则表达式 Python PIP Python Try...Except Python 用户输入 Python 字符串格式化

Python 文件处理

Python 文件处理 Python 打开文件 Python 创建/写入文件 Python 删除文件

Python NumPy

NumPy 简介 NumPy 入门 NumPy 创建数组 NumPy 数组索引 NumPy 数组裁切 NumPy 数据类型 NumPy 副本 vs 视图 NumPy 数组形状 NumPy 数组重塑 NumPy 数组迭代 NumPy 数组连接 NumPy 数组拆分 NumPy 数组搜索 NumPy 数组排序 NumPy 数组过滤 NumPy 随机数 NumPy ufunc 通用函数

Python SciPy

SciPy 简介 SciPy 入门 SciPy 常量 SciPy 优化器 SciPy 稀疏数据 SciPy 图表 SciPy 空间数据 SciPy Matlab 数组 SciPy 插值 SciPy 统计显着性检验

Python 机器学习

Machine 机器学习入门 Machine 平均中位数模式 Machine 标准差 Machine 百分位数 Machine 数据分布 Machine 正态数据分布 Machine 散点图 Machine 线性回归 Machine 多项式回归 Machine 多元回归 Machine 缩放 Machine 训练/测试 Machine 决策树

Python MySQL

MySQL 入门 MySQL Create Database MySQL Create Table MySQL Insert MySQL Select MySQL Where MySQL Order By MySQL Delete MySQL Drop Table MySQL Update MySQL Limit MySQL Join

Python MongoDB

MongoDB 入门 MongoDB 创建数据库 MongoDB 创建集合 MongoDB 插入 MongoDB 查找 MongoDB 查询 MongoDB 排序 MongoDB 删除 MongoDB 删除集合 MongoDB 更新 MongoDB 限制

Python 参考手册

Python 参考手册 Python 内置函数 Python 字符串方法 Python 列表/数组方法 Python 字典方法 Python 元组方法 Python 集合方法 Python 文件方法 Python 关键字 Python 内置异常 Python 词汇表

Python 模块参考

Python 随机模块 Python 请求模块 Python 统计模块 Python 数学模块 Python cMath模块

Python 如何使用

Python 删除列表重复项 Python 反转字符串 Python 添加两个数字

Python 高级教程

Python 常用指引 将Python2代码迁移到Python3 将扩展模块移植到 Python3 Curses 编程 描述器使用指南 函数式编程指引 日志常用指引 日志操作手册 正则表达式使用指南 套接字编程指南 排序指南 Unicode 指南 如何利用urllib包获取网络资源 Argparse 教程 ipaddress 模块介绍 Argument Clinic 的用法 使用DTrace和SystemTap检测CPython 对象注解属性的最佳实践

Python 实例

Python 实例 Python 编译器 Python 练习 Python 测验 NumPy 测验 SciPy 测验


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

结果:

亲自试一试 »

注释: The simplices property creates a generalization of the triangle notation.


凸包

凸包是覆盖所有给定点的最小多边形。

使用 ConvexHull() 方法创建一个 Convex Hull。

实例

为以下点创建一个凸包:

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

亲自试一试 »

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

是使用 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

亲自试一试 »