to_tree#
- scipy.cluster.hierarchy.to_tree(Z, rd=False)[source]#
- Convert a linkage matrix into an easy-to-use tree object. - The reference to the root - ClusterNodeobject is returned (by default).- Each - ClusterNodeobject has a- left,- right,- dist,- id, and- countattribute. The left and right attributes point to ClusterNode objects that were combined to generate the cluster. If both are None then the- ClusterNodeobject is a leaf node, its count must be 1, and its distance is meaningless but set to 0.- Note: This function is provided for the convenience of the library user. ClusterNodes are not used as input to any of the functions in this library. - Parameters:
- Zndarray
- The linkage matrix in proper form (see the - linkagefunction documentation).
- rdbool, optional
- When False (default), a reference to the root - ClusterNodeobject is returned. Otherwise, a tuple- (r, d)is returned.- ris a reference to the root node while- dis a list of- ClusterNodeobjects - one per original entry in the linkage matrix plus entries for all clustering steps. If a cluster id is less than the number of samples- nin the data that the linkage matrix describes, then it corresponds to a singleton cluster (leaf node). See- linkagefor more information on the assignment of cluster ids to clusters.
 
- Returns:
- treeClusterNode or tuple (ClusterNode, list of ClusterNode)
- If - rdis False, a- ClusterNode. If- rdis True, a list of length- 2*n - 1, with- nthe number of samples. See the description of rd above for more details.
 
 - See also - Notes - to_treehas 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=1and 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 - ⚠️ no JIT - ⚠️ no JIT - Dask - ⚠️ computes graph - n/a - See Support for the array API standard for more information. - Examples - >>> import numpy as np >>> from scipy.cluster import hierarchy >>> rng = np.random.default_rng() >>> x = rng.random((5, 2)) >>> Z = hierarchy.linkage(x) >>> hierarchy.to_tree(Z) <scipy.cluster.hierarchy.ClusterNode object at ... >>> rootnode, nodelist = hierarchy.to_tree(Z, rd=True) >>> rootnode <scipy.cluster.hierarchy.ClusterNode object at ... >>> len(nodelist) 9