Numpy 类型注释中的多种返回类型

问题描述

Numpy 的最新版本 1.20 workbox-background-sync library。这很棒,而且像 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

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

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)