python3.7.4 numpy_通过python3.4中numpy库实现汉明距离的计算

通过python3中numpy库实现汉明距离(Hamming distance)的计算

汉明距离的定义:两个等长字符串s1 与s2 之间的汉明距离定义为将其中一个变为另外一个所需要做的最小替换次数。例如字符串―1111‖与―1001‖之间的汉明距离为2。

应用:信息编码(为了增强容错性,应使得编码间的最小汉明距离尽可能大)。

程序实现:

通过对应向量(或矩阵)相减,结果中元素中非零元素个数即为汉明距离

例如:

vector1 = mat([1,1,0,1,0,1,0,0,1])

vector2 = mat([0,1,1,0,0,0,1,1,1])

vector3 = vector1-vector2= [[ 1 0 -1 1 0 1 -1 -1 0]]

通过函数nonzero(vector3)以矩阵的形式返回输入值中非零元素的信息如下:

(matrix([[0, 0, 0, 0, 0, 0]], dtype=int32), matrix([[0, 2, 3, 5, 6, 7]], dtype=int32))

再通过shape函数是读取返回值中矩阵的长度,即为汉明距离的长度。

代码如下:

from numpy import *

vector1 = mat([1,1,0,1,0,1,0,0,1])

vector2 = mat([0,1,1,0,0,0,1,1,1])

vector3 = vector1-vector2

print("vector3 = vector1-vector2",vector3)

smstr = nonzero(vector1-vector2);

print (smstr)

print (shape(smstr[0])[1])

程序运行结果如下:

vector3 = vector1-vector2 [[ 1 0 -1 1 0 1 -1 -1 0]]

(matrix([[0, 0, 0, 0, 0, 0]], dtype=int32), matrix([[0, 2, 3, 5, 6, 7]], dtype=int32))

6

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值