如何输入传递给numpy.asarray以产生2D float数组变量?

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

我经常写的是采取一些变量,它可以有很多形式,即列表的列表,元组的列表,元组的元组等全部包含数字,我想转换成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。任何提示?

python numpy typing mypy
1个回答
1
投票

尝试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型(通用)。

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