汉明距离(Hamming distance)是计算两个向量之间不同对应元素数量之和。本文介绍R、Python语言的计算过程。

汉明距离概述

汉明距离是以美国数学家理查德·汉明的名字命名的,他在1950年关于汉明码的论文中提出了该举例度量指标。它被广泛用于多个学科,如信息论、编码理论和密码学。

举例:
“karolin” 和 “kathrin” 两个字符串汉明距离为s 3 (差异字符有: r-t, o-h, l-r),

1011100 和 1001000 汉明距离为 2 (不同二进制数为: 1-0 和 1-0)

31738 和 32337 汉明距离为 3 (不同整数位: 1-2, 7-3, 和 8-7).

汉明距离在解决很多问题中被证明是非常有用。例如,在编码理论中它被用于错误检测和纠错码;在遗传学中它被用来衡量基因差异;在机器学习算法中用来寻找相似点或区别。

实现函数

假设有两个向量 x = [1, 2, 3, 4] ;y = [1, 2, 5, 7] .
它们之间的汉明距离为2,因为最后两个对应元素不同。

R语言的计算逻辑为:

sum(x != y)

Python的计算过程为:

# 自定义函数实现
def hammingDistance(s1, s2):"""返回等长序列之间的汉明距离"""if len(s1) != len(s2):raise ValueError("Undefined for sequences of unequal length")return sum(el1 != el2 for el1, el2 in zip(s1, s2))

当然也可以使用 scipy.spatial.distance 包 hamming 函数直接计算。

示例1(二值类型)

下面示例计算两个包括二值向量之间的距离:

# R语言实现
# 创建向量
x <- c(0, 0, 1, 1, 1)
y <- c(0, 1, 1, 1, 0)
sum(x != y)# [1] 2

Python代码实现:

from scipy.spatial.distance import hammingx = [0, 1, 1, 1, 0, 1]
y = [0, 0, 1, 1, 0, 0]hamming(x, y) * len(x)# 2.0

示例2(数值类型)

数值类型向量的汉明距离:

# 创建向量
x <- c(7, 12, 14, 19, 22)
y <- c(7, 12, 16, 26, 27)# 计算汉明距离
sum(x != y)# [1] 3

Python代码实现:

from scipy.spatial.distance import hammingx = [7, 12, 14, 19, 22]
y = [7, 12, 16, 26, 27]hamming(x, y) * len(x)# 3.0

示例3(字符串类型)

计算字符串类型汉明距离:

# 创建向量
x <- c('a', 'b', 'c', 'd')
y <- c('a', 'b', 'c', 'r')# 计算汉明距离
sum(x != y)# [1] 1

Python语言实现:

from scipy.spatial.distance import hamming # 定义数组
x = ['a', 'b', 'c', 'd']
y = ['a', 'b', 'c', 'r']hamming(x, y) * len(x)# 1.0

总结

本文介绍了汉明距离,并通过示例介绍R和Python语言的实现过程。

介绍汉明距离及计算示例相关推荐

  1. IO-Link工业总线型汽车撑杆装配线RFID写卡器CK-FR05-IO计算示例

    TAT 计算公式(单位:毫秒) TAT = 命令传送时间+通信时间+响应传送时间 命令和响应传送时间根据所发送的字符数和通信条件产生变化. 寄存器数量 2) (13 波特率( ) 10 1000 读操 ...

  2. Brinson多期归因计算示例

    brinson算法是经典的超额收益归因分析方法,适用于对大类资产或行业/板块的归因分析,通过基金持仓横截面(时点)数据,将超额收益分解为资产配置效应和选择效应,同时残差项当做交叉效应.单期归因的算法很 ...

  3. 图像去噪简单介绍—并给出示例代码

    文章目录 图像去噪简单介绍-并给出示例代码 去噪的基本原理 常见的噪声类型 高斯噪声 椒盐噪声 马赛克噪声 脉冲噪声 添加噪声的代码 添加高斯噪声 添加椒盐噪声 常用的去噪方法 均值滤波 中值滤波 高 ...

  4. 按一行一行的方法将一个文本文件复制到另一个文件中_大文件上的结构化数据计算示例...

    [摘要] 本文分析大文件计算的实现原理,如过滤.聚合计算.添加计算列.排序.分组聚合.topN 等,以及利用并行计算来提高计算速度,并用 esProc SPL 举例说明如何用简洁的脚本实现大文件计算. ...

  5. 【计算机网络】数据链路层 : CSMA/CD 协议 ( 载波监听多点接入 / 碰撞检测 协议 | 单程端到端传播时延 | 截断二进制指数规避算法 | 计算示例 | 最小帧长问题 )★

    文章目录 一. CSMA/CD 协议 二. 传播时延对于 载波监听 的影响 三. 单程端到端传播时延 相关概念 四. 碰撞后重传时机 ( 截断二进制指数规避算法 ) 五.截断二进制指数规避算法 计算示 ...

  6. 【计算机网络】数据链路层 : 选择重传协议 SR ( 帧分类 | “发送方“ 确认帧、超时事件 | “接受方“ 接收帧机制 | 滑动窗口长度 | 计算示例 )★

    文章目录 一. 选择重传协议 ( SR ) 引入 二. 选择重传协议 ( SR ) 帧分类 三. 发送方 事件 ( 确认帧.超时事件 ) 四. 接收方 事件 ( 接收帧 ) 五. 滑动窗口长度 五. ...

  7. 【计算机网络】物理层 : 调制 ( 数字数据 调制 模拟信号 | 调幅 | 调频 | 调相 | 调幅 + 调相 QAM | 计算示例 | 模拟信号 调制为 模拟信号 )

    文章目录 一. 数字数据调制技术 二. 调幅 三. 调频 四. 调相 五. QAM 调制 和 计算示例 六.模拟信号 调制为 模拟信号 一. 数字数据调制技术 数字数据调制 技术 : ① 调制 : 发 ...

  8. 【计算理论】下推自动机 PDA 及 计算示例

    文章目录 一. 下推自动机 二.下推自动机 计算过程 三.下推自动机 计算结果 四.下推自动机 计算示例 一. 下推自动机 1 . 下推自动机 由来 : 下推自动机 ( PDA ) 是在 确定性有限自 ...

  9. 【数据挖掘】卷积神经网络 ( 视觉原理 | CNN 模仿视觉 | 卷积神经网络简介 | 卷积神经网络组成 | 整体工作流程 | 卷积计算图示 | 卷积计算简介 | 卷积计算示例 | 卷积计算参数 )

    文章目录 I . 人类的视觉原理 II . 卷积神经网络 模仿 视觉原理 III . 卷积神经网络简介 IV . 卷积神经网络 组成 V . 卷积神经网络 工作流程 VI . 降低样本参数数量级 VI ...

最新文章

  1. LeetCode简单题之最长回文串
  2. IDEA添加maven并添加阿里镜像
  3. 使用MediaCodeC将图片集编码为视频
  4. 2021年下软考各省防控要求汇总
  5. C#三层架构之第三次课 业务逻辑层
  6. SAP UI5 应用开发教程之六十 - SAP UI5 地图控件的一些高级用法试读版
  7. Gensee SDK UserInfo类函数详细说明
  8. 深入浅出ES6教程模块化
  9. python实现:用类实现一个图书馆,实现借书,入库,还书,查书,等功能,要求数据可以保存到文件中,退出后下次可以找回数据...
  10. Laravel 队列发送邮件
  11. [ACL18]直接到树:基于神经句法距离的成分句法分析
  12. BZOJ4198: [Noi2015]荷马史诗(哈夫曼树)
  13. 《区块链底层设计Java实战》之第一章区块链简介
  14. ubuntu18.04 netplan 设置dns,dns不生效
  15. blendshapes
  16. QTcpSocket 及 TCP粘包分析
  17. STM32CUBE 定时器使用
  18. 华硕部分飞行堡垒系列安装ubuntu16.04(uefi+gpt+win10环境)
  19. 图像加噪与滤波处理(python+opencv)
  20. 校园无线网登陆成功,但打开浏览器不能上网怎么办?标签上显示注销页怎么办?

热门文章

  1. C# SaveFileDialog使用
  2. 排障:服务器直连路由Trunk口
  3. mysql decimal类型最大长度_mysql decimal类型与decimal长度用法详解
  4. 2013.10.5-7台风“菲特“fitow模拟实例【WRF模拟实操:WRFdomain范围设置,namelist代码,WRF模拟流程,wrfout结果查看头文件,原文对比】
  5. 520朱之文遭谷传民打击,徐春文书法透露结盟祁隆《爱的期限》
  6. 如何判断密文的加密方式
  7. 什么是AnTi防御-无限防方案?能帮助游戏解决哪些攻击问题?
  8. OceanBase 再破纪录!核心成员陈萌萌:坚持 HTAP 就是坚持我们做数据库的初心
  9. 各种排序算法复杂度比较
  10. 使用python基于zmq的DEALER-ROUTER模式实现分布式消息分发的demo