有效地使用函数填充2d numpy数组?

时间:2019-03-03 13:47:46

标签: python numpy

问题

给定一个1D整数数组,我必须用这些整数的所有可能配对之间的汉明距离来填充2D数组:

即给定[a,b,c,d],输出数组应为

[[0, h(a,b), h(a,c), h(a,d)],
 [0,      0, h(b,c), h(b,d)],
 [0,      0,      0, h(c,d)],
 [0,      0,      0,      0]]

其中h(a,b)是两个数字之间的汉明距离。

当前解决方案

import numpy as np

# given that a and b are np.uint8
def hamming_distance(a, b):
    return np.count_nonzero(np.unpackbits(np.bitwise_xor(a,b)))

def pairings(arr):
    a = np.zeros((len(arr), len(arr)))
    for i in range(len(arr) - 1):
        for j in range(i + 1, len(arr)):
            a[i,j] = hamming_distance(arr[i], arr[j])
    return a

问题

我想知道是否有一种方法可以更有效地执行此操作,因为配对矩阵必须被计算数万次,并且double for循环的执行效果非常差。

0 个答案:

没有答案