如何记录一个返回已知大小的Numpy数组的Python函数?

pbgvytdp  于 2023-08-05  发布在  Python
关注(0)|答案(2)|浏览(90)

我想知道如何记录一个返回已知大小的numpy数组的函数。
我有一个函数声明为

def poseToVector6(pose: Pose) -> np.ndarray:

字符串
该函数返回一个已知大小的numpy数组,即一个6x1列向量,给定输出的语义。
我想知道如何指定返回数组的形状。
如果我将声明更改为

def poseToVector6(pose: Pose) -> np.ndarray((6,1)):


然后,当从外部模块导入函数时,VSCode建议函数的签名为

(function) def poseToVector6(pose: Pose) -> Any


代替了

(function) def poseToVector6(pose: Pose) -> ndarray


有没有办法写一个更准确的文档?

zrfyljdw

zrfyljdw1#

要准确记录返回已知大小的numpy数组的函数,可以在Python中使用类型提示和文档字符串

def poseToVector6(pose: Pose) -> ndarray:
    """
    Convert a pose to a 6x1 column vector.

    Args:
        pose (Pose): The input pose.

    Returns:
        ndarray: A 6x1 column vector representing the pose.
    """
    # Implementation code here
    # ...

    
    return np.zeros((6, 1))

字符串

wrrgggsh

wrrgggsh2#

数组的大小是 value 的一部分,而不是类型。您需要的是用于演示 * 依赖类型 * 的典型示例,mypy(或任何其他静态类型检查器)AFAIK当前不支持这些类型。
对于文件的目的,您可以使用typing.Annotated来附加尺寸信息。

from typing import Annotated

def poseToVector6(pose: Pose) -> Annotated[np.ndarray, (6, 1)]:
    ...

字符串
专门的类型检查器可以尝试静态推断返回值的大小,以实际 * 检查 * 注解类型,但由于大小是 * 值 * 的属性,而不是值的类型,这样做即使不是不可能的,也不是微不足道的。

相关问题