scipy.cluster.hierarchy.optimal_leaf_ordering¶
-
scipy.cluster.hierarchy.
optimal_leaf_ordering
(Z, y, metric='euclidean')[source]¶ Given a linkage matrix Z and distance, reorder the cut tree.
Parameters: Z : ndarray
The hierarchical clustering encoded as a linkage matrix. See
linkage
for more information on the return structure and algorithm.y : ndarray
The condensed distance matrix from which Z was generated. Alternatively, a collection of m observation vectors in n dimensions may be passed as a m by n array.
metric : str or function, optional
The distance metric to use in the case that y is a collection of observation vectors; ignored otherwise. See the
pdist
function for a list of valid distance metrics. A custom distance function can also be used.Returns: Z_ordered : ndarray
A copy of the linkage matrix Z, reordered to minimize the distance between adjacent leaves.
Examples
>>> from scipy.cluster import hierarchy >>> np.random.seed(23) >>> X = np.random.randn(10,10) >>> Z = hierarchy.ward(X) >>> hierarchy.leaves_list(Z) array([0, 5, 3, 9, 6, 8, 1, 4, 2, 7], dtype=int32) >>> hierarchy.leaves_list(hierarchy.optimal_leaf_ordering(Z, X)) array([3, 9, 0, 5, 8, 2, 7, 4, 1, 6], dtype=int32)