bundles / scipy 1.18.0 / scipy / cluster / hierarchy / _hierarchy_impl / optimal_leaf_ordering
function
scipy.cluster.hierarchy._hierarchy_impl:optimal_leaf_ordering
Signature
def optimal_leaf_ordering(Z, y, metric = euclidean)Summary
Given a linkage matrix Z and distance, reorder the cut tree.
Parameters
Z: ndarrayThe hierarchical clustering encoded as a linkage matrix. See linkage for more information on the return structure and algorithm.
y: ndarrayThe condensed distance matrix from which Z was generated. Alternatively, a collection of m observation vectors in n dimensions may be passed as an m by n array.
metric: str or function, optionalThe distance metric to use in the case that y is a collection of observation vectors; ignored otherwise. See the
pdistfunction for a list of valid distance metrics. A custom distance function can also be used.
Returns
Z_ordered: ndarrayA copy of the linkage matrix Z, reordered to minimize the distance between adjacent leaves.
Notes
Array API Standard Support
optimal_leaf_ordering has experimental support for Python Array API Standard compatible backends in addition to NumPy. Please consider testing these features by setting an environment variable SCIPY_ARRAY_API=1 and providing CuPy, PyTorch, JAX, or Dask arrays as array arguments. The following combinations of backend and device (or other capability) are supported.
==================== ==================== ==================== Library CPU GPU ==================== ==================== ==================== NumPy ✅ n/a CuPy n/a ⛔ PyTorch ✅ ⛔ JAX ✅ ⛔ Dask ⚠️ merges chunks n/a ==================== ==================== ====================
See dev-arrayapi for more information.
Examples
import numpy as np from scipy.cluster import hierarchy rng = np.random.default_rng() X = rng.standard_normal((10, 10)) Z = hierarchy.ward(X)✓
hierarchy.leaves_list(Z) hierarchy.leaves_list(hierarchy.optimal_leaf_ordering(Z, X))✗
array([4, 3, 1, 9, 8, 7, 5, 6, 2, 0], dtype=int32)
Aliases
scipy.cluster.hierarchy.optimal_leaf_ordering