You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

在numba-scipy中应从何处导入linkage函数?

如何为numba-scipy正确导入linkage函数?

你当前的代码尝试替换scipy.cluster.hierarchy.linkage为numba-scipy版本,但导入路径有误。numba-scipy的工作逻辑是通过**猴子补丁(monkey-patching)**自动加速现有scipy函数,不需要直接从numba-scipy包中导入目标函数。

原始代码(存在导入疑问)

import numpy as np
import pandas as pd
from scipy.cluster.hierarchy import dendrogram, linkage, cut_tree
>>> "WHAT TO PUT HERE"   from numba_scipy.special.overloads import linkage "?"


X = [[1.0,2.0,3.0,4.0,5.0],
     [1.0,3.0,4.0,5.0,6.0],
     [1.0,2.0,5.0,6.0,7.0],
     [2.0,3.0,5.0,4.0,3.0]]

Xdf = pd.DataFrame(data=X).transpose()

Zf = linkage(Xdf.transpose(), 'single', 'correlation')

正确的修改方式

只需要在导入scipy相关函数之前导入numba_scipy,它会自动替换scipy中支持的函数为加速版本,无需修改原有的linkage调用代码:

# 先导入numba_scipy,触发猴子补丁
import numba_scipy
import numpy as np
import pandas as pd
# 正常导入scipy的函数,此时linkage已经被numba加速
from scipy.cluster.hierarchy import dendrogram, linkage, cut_tree


X = [[1.0,2.0,3.0,4.0,5.0],
     [1.0,3.0,4.0,5.0,6.0],
     [1.0,2.0,5.0,6.0,7.0],
     [2.0,3.0,5.0,4.0,3.0]]

Xdf = pd.DataFrame(data=X).transpose()

# 调用的已经是numba加速后的linkage
Zf = linkage(Xdf.transpose(), 'single', 'correlation')

注意事项

  • 确保已安装依赖:pip install numba numba-scipy scipy pandas numpy
  • numba-scipy对scipy函数的支持并非完全覆盖,若使用的linkage方法(如这里的single+correlation)未被支持,会自动 fallback 到原始scipy实现
  • 不需要手动从numba_scipy.special.overloads导入函数,这是内部模块,不对外暴露

内容的提问来源于stack exchange,提问作者ManInMoon

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.06 02:05:18