作为这个问题的后续我有一个函数将返回固定列但可变行的二维
numpy.array
import numpy.typing as npt
def example() -> npt.ArrayLike:
data = np.array([[1,2,3],
[4,5,6],
...,
[x,y,z]])
我如何具体提示返回的数组将是
3
列乘 N
(变量)行?
2022年10月24日更新
目前这仍然不可能,但根据对 Numpy GitHub 问题的评论,一旦 mypy 支持PEP 646,这将是可能的。请参阅mypy 的 GitHub 存储库上的相关问题。该问题在撰写本文时尚未解决。
Python 3.11 今天发布,支持 PEP646。一旦 mypy 支持 PEP646,用户将能够输入提示 Numpy 数组的形状。
旧答案
此时(2022 年 9 月 13 日)似乎无法键入提示
numpy.ndarray
的形状(或数据类型)。然而,最近有一些针对 numpy 的拉取请求正在努力实现这一目标。
https://github.com/numpy/numpy/pull/17719
使
类通用。它的形状和类型:np.ndarray
np.ndarray[~Shape, ~DType]
但是,该 PR 的一个明确的非目标是为
numpy.ndarray
创建运行时可订阅的别名。根据该 PR,这些更改将在以后的 PR 中出现。
https://github.com/numpy/numpy/issues/16544
讨论形状输入支持的问题。在撰写本文时它仍然开放。
PEP 646 与此相关,并已被 Python 3.11 接受。根据 numpy/numpy 问题 #16544,在 mypy 等类型检查器添加对 PEP 646 的支持后,将能够对数组的形状和数据类型进行类型提示。
nptyping
包来完成,但这不是 numpy 的一部分。
from typing import Any
from nptyping import NDArray
# Nx3 array with Any data type.
NDArray[(Any, 3), Any]