一种方式来处理,这是利用histogram。作为一个例子(示范与numpy):
In []: a= array([1,8,3,9,4,9,3,8,1,2,3])
In []: b= array([1,8,1,3,9,4,9,3,8,1,2,3])
In []: a_c, _= histogram(a, arange(9)+ 1)
In []: a_c
Out[]: array([2, 1, 3, 1, 0, 0, 0, 4])
In []: b_c, _= histogram(b, arange(9)+ 1)
In []: b_c
Out[]: array([3, 1, 3, 1, 0, 0, 0, 4])
In []: (a_c- b_c).sum()
Out[]: -1
现在存在着的方法,利用a_c
和b_c
过多。
凡(貌似)简单的相似性措施是:
In []: 1- abs(-1/ 9.)
Out[]: 0.8888888888888888
其次:
In []: norm(a_c)/ norm(b_c)
Out[]: 0.92796072713833688
和:
In []: a_n= (a_c/ norm(a_c))[:, None]
In []: 1- norm(b_c- dot(dot(a_n, a_n.T), b_c))/ norm(b_c)
Out[]: 0.84445724579043624
因此,你需要更具体的到找出适合您的目的的最适合的相似性度量。
考虑一个字符串,仅仅是字符的列表,就似乎是计算字符串编辑距离和计算整数列表编辑距离之间的一个非常简单的映射。 – Chowlett
也许你正在寻找[汉明距离](http://en.wikipedia.org/wiki/Hamming_distance)? –
@Pat B:汉明距离要求序列具有相同的长度,并且它不能处理删除/插入。看看OP的例子('a'和'b')。 – NPE