首页 > 解决方案 > Numpy 类型注解中的多种返回类型

问题描述

Numpy 的最新版本 1.20包括类型注释。这很棒,像 mypy 这样的工具,现在不再抱怨 Numpy 缺少类型信息,而是抱怨你的代码。

这个简单的示例计算将始终返回一个点的 n 维 m 点的质心:

from numpy import ndarray
def centroid(points: ndarray) -> ndarray:
    return points.mean(axis=0)

在 Numpy 1.20 之前,mypy 抱怨Skipping analyzing numpy. 现在它说

Mypy:不兼容的返回值类型(得到“Union [number [Any],ndarray]”,预期“ndarray”)

因为mean()可能会返回一个数字或一个数组,但预期的返回值只有一个数组centroid()

可以在不增加执行时间的情况下避免警告

    return cast(ndarray, points.mean(axis=0))

或者干脆

    return points.mean(axis=0)       # type: ignore

有没有更好的方法而不需要额外的计算?

标签: pythonnumpytype-hintingmypy

解决方案


推荐阅读