NumPy 使用 mypy 从函数错误中返回任何内容

问题描述 投票:0回答:1

当我运行

mypy main.py --strict

# main.py
import numpy as np
import numpy.typing as npt

def foo(x: npt.NDArray[np.float64]) -> npt.NDArray[np.float64]:
    return np.square(x)

我明白了

Success: no issues found in 1 source file

但是当我尝试计算

np.mean
时,我收到错误

# main.py
import numpy as np
import numpy.typing as npt

def foo(x: npt.NDArray[np.float64]) -> np.float64:
    return np.mean(np.square(x))
$ mypy main.py --strict
main.py:6: error: Returning Any from function declared to return "floating[_64Bit]"  [no-any-return]
Found 1 error in 1 file (checked 1 source file)

我做错了什么?是否因为它不知道

x
的形状,因此如果
np.mean
大于一维,则
x
可以返回一个数组?就我而言,
x
始终是一维的,因此我总是会返回一个浮点数,并且我希望类型提示反映用户应该期望返回一个浮点数。

相关 - 标量/数组乘法返回任何类型

python numpy mypy
1个回答
0
投票

你可以试试这个,



import numpy as np
import numpy.typing as npt

def foo(x: npt.NDArray[np.float64]) -> np.float64:
    return np.float64(np.mean(np.square(x)))

我让返回值

return np.float64
与预期返回的值相同
-> np.float64

© www.soinside.com 2019 - 2024. All rights reserved.