Skip to main content
`Ctrl`+`K`
scipy.cluster.hierarchy.

# leaves_list

scipy.cluster.hierarchy.leaves_list(Z)

  Return a list of leaf node ids.

  The return corresponds to the observation vector index as it appears in the tree from left to right. Z is a linkage matrix.

  Parameters:
    Z ndarray

      The hierarchical clustering encoded as a matrix. Z is a linkage matrix. See `linkage` for more information.

  Returns:
    leaves_list ndarray

      The list of leaf node ids.

  See also

  `dendrogram`

    for information about dendrogram structure.

  Notes

  `leaves_list` 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 Support for the array API standard for more information.

  Examples

      >>> from scipy.cluster.hierarchy import ward, dendrogram, leaves_list
      >>> from scipy.spatial.distance import pdist
      >>> from matplotlib import pyplot as plt

      >>> X = [[0, 0], [0, 1], [1, 0],
      ...      [0, 4], [0, 3], [1, 4],
      ...      [4, 0], [3, 0], [4, 1],
      ...      [4, 4], [3, 4], [4, 3]]

      >>> Z = ward(pdist(X))

  The linkage matrix `Z` represents a dendrogram, that is, a tree that encodes the structure of the clustering performed. `scipy.cluster.hierarchy.leaves_list` shows the mapping between indices in the `X` dataset and leaves in the dendrogram:

      >>> leaves_list(Z)
      array([ 2,  0,  1,  5,  3,  4,  8,  6,  7, 11,  9, 10], dtype=int32)

      >>> fig = plt.figure(figsize=(25, 10))
      >>> dn = dendrogram(Z)
      >>> plt.show()