#### Previous topic

scipy.cluster.hierarchy.fclusterdata

#### Next topic

scipy.cluster.hierarchy.linkage

# scipy.cluster.hierarchy.leaders

`scipy.cluster.hierarchy.``leaders`(Z, T)

  Returns the root nodes in a hierarchical clustering.

  Returns the root nodes in a hierarchical clustering corresponding to a cut defined by a flat cluster assignment vector `T`. See the `fcluster` function for more information on the format of `T`.

  For each flat cluster \(j\) of the \(k\) flat clusters represented in the n-sized flat cluster assignment vector `T`, this function finds the lowest cluster node \(i\) in the linkage tree Z such that:

  > - leaf descendents belong only to flat cluster j (i.e. `T[p]==j` for all \(p\) in \(S(i)\) where \(S(i)\) is the set of leaf ids of leaf nodes descendent with cluster node \(i\))
  > - there does not exist a leaf that is not descendent with \(i\) that also belongs to cluster \(j\) (i.e. `T[q]!=j` for all \(q\) not in \(S(i)\)). If this condition is violated, `T` is not a valid cluster assignment vector, and an exception will be thrown.

  Parameters:

  Z : ndarray

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

  T : ndarray

  > The flat cluster assignment vector.

  Returns:

  L : ndarray

  > The leader linkage node id’s stored as a k-element 1-D array where `k` is the number of flat clusters found in `T`.

  > `L[j]=i` is the linkage cluster node id that is the leader of flat cluster with id M[j]. If `i < n`, `i` corresponds to an original observation, otherwise it corresponds to a non-singleton cluster.

  > For example: if `L[3]=2` and `M[3]=8`, the flat cluster with id 8’s leader is linkage node 2.

  M : ndarray

  > The leader linkage node id’s stored as a k-element 1-D array where `k` is the number of flat clusters found in `T`. This allows the set of flat cluster ids to be any arbitrary set of `k` integers.