Skip to content Skip to sidebar Skip to footer

Merging Arrays Containing The Same Values

I need to get a high correlation group from the correlation coefficient matrix, keep one of them and exclude the other。But I don't know how to do it gracefully and efficiently. H

Solution 1:

The central problem of merging / consolidating the pairs with common extrema can be solved using this answer.

Hence, the above code may be rewritten like:

a = np.array([[1,0,0,0,0,1],
              [0,1,0,1,0,0],
              [0,0,1,0,1,1],
              [0,1,0,1,0,0],
              [0,0,1,0,1,0],              
              [1,0,1,0,0,1]])

a[np.tril_indices(6, -1)]= 0     
a[np.diag_indices(6)]    = 0     
g = np.c_[np.where(a)].tolist()

def consolidate(items):
    items = [set(item.copy()) for item in items]
    for i, x inenumerate(items):
        for j, y inenumerate(items[i + 1:]):
            if x & y:
                items[i + j + 1] = x | y
                items[i] = None
    return [sorted(x) for x in items if x]

p = {i + 1: x for i, x inenumerate(sorted(consolidate(g)))}

Post a Comment for "Merging Arrays Containing The Same Values"