如何计算没有循环的{1}和2d数组之间的汉明距离

时间:2017-10-16 02:07:41

标签: python arrays numpy

A是具有形状100的1d阵列,B是具有形状(50000,100)的2d阵列。我想计算A和B之间的汉明距离,得到一个形状为50000的数组X.

我可以用循环来完成:

for i in range(50000):
    X[i] = np.count_nonzero(A != B[j,:])

我想知道我可以跳过循环或做些什么来加快速度吗?

1 个答案:

答案 0 :(得分:1)

您可以直接将ABA != B进行比较,A会因为Bnp.count_nonzero的维度不同而进行广播,然后您可以使用axis=1每行使用np.count_nonzero(A != B, axis=1)

A = np.array([1,2])
B = np.array([[1,2],[3,2],[1,3],[2,4]])

np.count_nonzero(A != B, axis=1)
# array([0, 1, 1, 2])
Firefox 57