A是具有形状100的1d阵列,B是具有形状(50000,100)的2d阵列。我想计算A和B之间的汉明距离,得到一个形状为50000的数组X.
我可以用循环来完成:
for i in range(50000):
X[i] = np.count_nonzero(A != B[j,:])
我想知道我可以跳过循环或做些什么来加快速度吗?
答案 0 :(得分:1)
您可以直接将A
和B
与A != B
进行比较,A
会因为B
和np.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