曼哈顿距离简介

软硬件环境

  • ubuntu 18.04 64bit

  • anaconda with python 3.6

  • numpy 1.12.1

前言

维基百科上给的定义

计程车几何(Taxicab geometry)或曼哈顿距离(Manhattan distance or Manhattan length)或方格线距离是由十九世纪的赫尔曼·闵可夫斯基所创辞汇,为欧几里得几何度量空间的几何学之用语,用以标明两个点上在标准坐标系上的绝对轴距之总和。

想象你在曼哈顿,要从一个十字路口开车到另外一个十字路口,实际驾驶距离就是这个“曼哈顿距离”。而这也是曼哈顿距离名称的来源,曼哈顿距离也称为城市街区距离。

在上图中,绿线是欧几里得距离,红线是曼哈顿距离,蓝线和黄线是等价的曼哈顿距离。

二维平面两点a(x1,y1)与b(x2,y2)间的曼哈顿距离

两个n维向量a(x11,x12,…,x1k)与 b(x21,x22,…,x2k)间的曼哈顿距离

代码实现

 1#!/usr/bin/env python
 2# -*- coding: utf-8 -*-
 3# @Date    : 2018-08-20 16:10:23
 4# @Author  : xugaoxiang (djstava@gmail.com)
 5# @Link    : link
 6# @Version : 1.0.0
 7
 8import os
 9import numpy as np
10
11def get_manhattan_distance(vect1, vect2):
12    dist = np.sum(np.abs(vect1 - vect2))
13
14    # 或者使用内建方法
15    # dist = np.linalg.norm(vect1 - vect2, ord=1)
16    return dist
17
18if __name__ == '__main__':
19    vect1 = np.array([1, 2, 3])
20    vect2 = np.array([4, 5, 6])
21
22    dist = get_manhattan_distance(vect1, vect2)
23    print(dist)

输出结果

19

参考资料

  • https://zh.wikipedia.org/wiki/%E6%9B%BC%E5%93%88%E9%A0%93%E8%B7%9D%E9%9B%A2

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

迷途小书童的Note

请博主喝矿泉书!

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值