python - 二进制 numpy 数组之间的快速汉明距离计算

标签 python arrays numpy cython hamming-distance

我有两个包含二进制值的相同长度的 numpy 数组

import numpy as np
a=np.array([1, 1, 1, 1, 1, 1, 0, 1, 1, 0, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 0])
b=np.array([1, 1, 1, 1, 0, 1, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 0, 1, 1, 0, 1])

我想尽快计算出它们之间的汉明距离,因为我要进行数百万次这样的距离计算。

这是一个简单但缓慢的选项(取自维基百科):

%timeit sum(ch1 != ch2 for ch1, ch2 in zip(a, b))
10000 loops, best of 3: 79 us per loop

我想出了更快的选项,灵感来自这里关于堆栈溢出的一些答案。

%timeit np.sum(np.bitwise_xor(a,b))
100000 loops, best of 3: 6.94 us per loop

%timeit len(np.bitwise_xor(a,b).nonzero()[0])
100000 loops, best of 3: 2.43 us per loop

我想知道是否有更快的方法来计算这个,可能使用 cython?

最佳答案

有一个现成的 numpy 函数胜过 len((a != b).nonzero()[0]) ;)

np.count_nonzero(a!=b)

关于python - 二进制 numpy 数组之间的快速汉明距离计算,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32730202/

相关文章:

JavaScript - 使用数组原型(prototype)方法从以下数组中删除索引

python - numpy-array 中子矩阵的矢量化提取

python - 取带有掩码元素的 numpy ndarray 的平均值

python - 在opencv python中每秒处理一帧

javascript - 如何用 D3 对数组求和?

python - 附加字典列表,其中一个字典中包含一个附加键,并且一个嵌套字典作为其值

arrays - vba从数组数组中提取数组

python - 如何找到具有相同 ID 的所有变量?

python - 使用 pytube 库从 csv 下载 youtube 链接

python - 金字塔在主包之外运行测试