scipy.cluster.hierarchy.
optimal_leaf_ordering#
- scipy.cluster.hierarchy.optimal_leaf_ordering(Z, y, metric='euclidean')[source]#
给定一个连接矩阵 Z 和距离,重新排序切割树。
- 参数:
- Zndarray
表示为连接矩阵的分层聚类。有关返回结构和算法的更多信息,请参见
linkage
。- yndarray
从中生成 Z 的压缩距离矩阵。或者,可以将 m 个观察向量的集合(位于 n 维空间中)作为 m 行 n 列的数组传递。
- metricstr 或 function,可选
如果 y 是观察向量的集合,则使用的距离度量;否则忽略。有关有效的距离度量列表,请参见
pdist
函数。也可以使用自定义距离函数。
- 返回:
- Z_orderedndarray
连接矩阵 Z 的副本,经过重新排序以最小化相邻叶子之间的距离。
注释
optimal_leaf_ordering
除了 NumPy 之外,还对 Python Array API Standard 兼容后端提供实验性支持。请考虑通过设置环境变量SCIPY_ARRAY_API=1
并提供 CuPy、PyTorch、JAX 或 Dask 数组作为数组参数来测试这些功能。支持以下后端和设备(或其他功能)的组合。库
CPU
GPU
NumPy
✅
n/a
CuPy
n/a
⛔
PyTorch
✅
⛔
JAX
✅
⛔
Dask
⚠️ 合并块
n/a
有关更多信息,请参见 支持数组 API 标准。
示例
>>> 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) array([0, 3, 1, 9, 2, 5, 7, 4, 6, 8], dtype=int32) >>> hierarchy.leaves_list(hierarchy.optimal_leaf_ordering(Z, X)) array([3, 0, 2, 5, 7, 4, 8, 6, 9, 1], dtype=int32)