Reordering matrix elements to reflect column and row clustering in naiive python [duplicate]

I’m not sure completely understand, but it appears you are trying to re-index each axis of the array based on sorts of the dendrogram indicies. I guess that assumes there is some comparative logic in each branch delineation. If this is the case then would this work(?):

>>> x_idxs = [(0,1,0,0),(0,1,1,1),(0,1,1),(0,0,1),(1,1,1,1),(0,0,0,0)]
>>> y_idxs = [(1,1),(0,1),(1,0),(0,0)]
>>> a = np.random.random((len(x_idxs),len(y_idxs)))
>>> x_idxs2, xi = zip(*sorted(zip(x_idxs,range(len(x_idxs)))))
>>> y_idxs2, yi = zip(*sorted(zip(y_idxs,range(len(y_idxs)))))
>>> a2 = a[xi,:][:,yi]

x_idxs and y_idxs are the dendrogram indicies. a is the unsorted matrix. xi and yi are your new row/column array indicies. a2 is the sorted matrix while x_idxs2 and y_idxs2 are the new, sorted dendrogram indicies. This assumes that when the dendrogram was created that a 0 branch column/row is always comparatively larger/smaller than a 1 branch.

If your y_idxs and x_idxs are not lists but are numpy arrays, then you could use np.argsort in a similar manner.

Leave a Comment

Hata!: SQLSTATE[HY000] [1045] Access denied for user 'divattrend_liink'@'localhost' (using password: YES)