类型提示 2D numpy 数组

Cor*_*mer 22 python numpy type-hinting

作为这个问题的后续,我有一个函数将返回numpy.array固定列但可变行的二维

import numpy.typing as npt

def example() -> npt.ArrayLike:
    data = np.array([[1,2,3],
                     [4,5,6],
                     ...,
                     [x,y,z]])
Run Code Online (Sandbox Code Playgroud)

我如何具体提示返回的数组将是3N(变量)行组成的列?

Jak*_*kub 22

2022 年 10 月 24 日更新

目前这仍然不可能,但根据Numpy GitHub 问题上的评论,一旦 mypy 支持PEP 646,这将是可能的。请参阅mypy 的 GitHub repo 上的相关问题。该问题在撰写本文时尚未解决。

Python 3.11 今天发布,支持 PEP646。一旦 mypy 支持 PEP646,用户将能够输入提示 Numpy 数组的形状。


较旧的答案

numpy.ndarray此时(2022 年 9 月 13 日)似乎无法对 a 的形状(或数据类型)进行类型提示。然而,最近有一些针对 numpy 的拉取请求正在努力实现这一目标。

PEP 646与此相关,并已被 Python 3.11 接受。根据numpy/numpy Issue #16544,在 mypy 等类型检查器添加对 PEP 646 的支持后,我们将能够对数组的形状和数据类型进行类型提示。


这可以通过nptypingpackage来完成,但这不是 numpy 的一部分。

from typing import Any
from nptyping import NDArray

# Nx3 array with Any data type.
NDArray[(Any, 3), Any]
Run Code Online (Sandbox Code Playgroud)