我经常写的是采取一些变量,它可以有很多形式,即列表的列表,元组的列表,元组的元组等全部包含数字,我想转换成numpy的阵列,有点像函数/方法以下:
import numpy as np
def my_func(var: 'what-freaking-type-here') -> np.ndarray:
a = np.asarray(var, dtype=np.float64) # type: np.array[np.float] maybe?
return a
基本上我的问题是如何适当地,键入该给定我可以通过各种值,以该函数以最终创建二维浮阵列(注意,这只是一个例子,维度和类型应是可互换的):
my_func([[0], [0]])
my_func([(0,), (2.3,)])
my_func(((0,), [2.3,]))
my_func(np.arange(100).reshape(10, 10))
我有采取各种价值观,使之成为numpy
阵列在很多地方,以便与功能工作方便和直观的这种做法。但是,我不知道如何正确输入这个验证与mypy
。任何提示?
尝试numpy-stubs: experimental typing stubs for NumPy。
它定义了这样的np.array()
函数的类型:
def array(
object: object,
dtype: _DtypeLike = ...,
copy: bool = ...,
subok: bool = ...,
ndmin: int = ...,
) -> ndarray: ...
这需要对内容有任何object
并返回一个ndarray
类型。
这是一项正在进行的工作。不要报到,如果在这个阶段有效。
还有更早的项目numpy-mypy。正如指出的那样,
不少numpy的方法是非常灵活和他们尽最大努力,以适应任何可能的参数组合。 ...虽然这对用户来说,它试图描述的那些方法的类型签名时给我们造成了很多问题。
它定义了这样的np.array()
函数的类型:
def array(object: Any, dtype: Any=None, copy: bool=True,
order: str=None, subok: bool=False,
ndmin: int=0) -> ndarray[Any]: ...
这需要Any
的内容(没有类型检查那里),并返回该元素类型参数真实的ndarray
型(通用)。