gpt4 book ai didi

python - 评估 numpy.radians 和浮点/数组输入元素的类型提示

转载 作者:行者123 更新时间:2023-12-05 04:40:23 30 4
gpt4 key购买 nike

我有一个如下所示的函数:

import numpy as np

def test() -> None:
a = map(np.radians, (1.,2.,np.array([1,2,3])))

用 mypy 计算返回错误信息

error: Argument 1 to "map" has incompatible type "ufunc"; expected "Callable[[object], Any]"

仅使用 float 或数组作为 map 的输入列表在这里没有问题,当输入列表/元组包含两种类型的对象时就会出现问题。在运行时这也没有问题。如何修改此函数以满足 mypy 的要求并使其类型安全?

最佳答案

这里的问题是 mypy 将 (1., 2., np.array([1,2,3])) 的元素类型推断为 object(不像你希望的那样 Union[float, np.ndarray]),它与 np.radians 不兼容。

作为解决方法,您可以为您的元组/列表提供一个与元组/列表和 np.radians 的参数兼容的显式类型。例如:

from typing import Sequence, Union
import numpy as np

def test() -> None:
x: Sequence[Union[float, np.ndarray]] = (1., 2., np.array([1,2,3]))
a = map(np.radians, x)

有一个 open mypy github issue 看起来很相似,但也许不完全相同:python/mypy#6697 .

关于python - 评估 numpy.radians 和浮点/数组输入元素的类型提示,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/70292790/

30 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com