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

为何Pylance报错:Float|ndarray无法匹配float|ndarray返回类型?

问题解析与修复

关于Float类型的疑问

Pylance提示的Float不是numpy对外公开的明确定义类型,它是类型检查器对numpy各类浮点标量(比如np.float64、np.float32)的抽象指代。scikit-learn的median_absolute_error返回单一值时,给出的是numpy浮点标量而非Python原生float,这就和你声明的float | np.ndarray返回类型不匹配,所以触发了错误提示。

修复方式

方式一:匹配numpy浮点类型

把返回类型改成np.floating | np.ndarray,直接对应函数实际返回的类型:

from sklearn.metrics import median_absolute_error
import numpy as np

class MedAbsError:
    name: str = "MAE"
    def compute(self, predictions: np.ndarray, observations: np.ndarray) -> np.floating | np.ndarray:
        return median_absolute_error(y_pred=predictions, y_true=observations)

方式二:转换为Python原生类型

如果需要返回Python原生float或numpy数组,可以在返回时做类型转换:

from sklearn.metrics import median_absolute_error
import numpy as np

class MedAbsError:
    name: str = "MAE"
    def compute(self, predictions: np.ndarray, observations: np.ndarray) -> float | np.ndarray:
        result = median_absolute_error(y_pred=predictions, y_true=observations)
        return float(result) if isinstance(result, np.floating) else result

内容的提问来源于stack exchange,提问作者An old man in the sea.

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.11 08:56:04