cut_tree#
- scipy.cluster.hierarchy.cut_tree(Z, n_clusters=None, height=None)[source]#
- Given a linkage matrix Z, return the cut tree. - Parameters:
- Zscipy.cluster.linkage array
- The linkage matrix. 
- n_clustersarray_like, optional
- Number of clusters in the tree at the cut point. 
- heightarray_like, optional
- The height at which to cut the tree. Only possible for ultrametric trees. 
 
- Returns:
- cutreearray
- An array indicating group membership at each agglomeration step. I.e., for a full cut tree, in the first column each data point is in its own cluster. At the next step, two nodes are merged. Finally, all singleton and non-singleton clusters are in one group. If n_clusters or height are given, the columns correspond to the columns of n_clusters or height. 
 
 - Notes - cut_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 - ⛔ - ⛔ - Dask - ⛔ - n/a - See Support for the array API standard for more information. - Examples - >>> from scipy import cluster >>> import numpy as np >>> from numpy.random import default_rng >>> rng = default_rng() >>> X = rng.random((50, 4)) >>> Z = cluster.hierarchy.ward(X) >>> cutree = cluster.hierarchy.cut_tree(Z, n_clusters=[5, 10]) >>> cutree[:10] array([[0, 0], [1, 1], [2, 2], [3, 3], [3, 4], [2, 2], [0, 0], [1, 5], [3, 6], [4, 7]]) # random