python - 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
有没有更好的方法而不需要额外的计算?
解决方案
推荐阅读
- python - 如何通过python中的系列从数据框中获取公共变量
- php - 页面 div 元素更新后选定的文本消失
- c - C中动态分配内存的初始化
- machine-learning - 数据科学案例研究
- python - What does "char_to_ix = { ch:i for i,ch in enumerate(sorted(chars)) }" do?
- angular - ':leave' 转换在 Angular 2+ 应用程序中不会触发
- terraform - Terraform 实例枚举
- c - 检查双精度的条件是整数不起作用
- arrays - React Native 为什么我的数组大小会在没有推送的情况下增加
- objective-c - 宏导致 NSString 变量名称的编译器错误