Numpy何时计划支持PEP 646定义的张量形状类型注解?
Numpy对PEP 646可变泛型形状注解的支持规划
目前Numpy官方尚未公布支持PEP 646定义的可变泛型形状注解的具体时间表。
现有进展与讨论
你提到的早期讨论确实涉及了张量形状和数据类型注解的规划,但该议题后续推进重点放在了numpy.typing模块的类型系统基础建设上,而非直接落地可变泛型的形状注解。社区仍在探讨具体实现方案,核心需要解决的是如何平衡类型注解的静态约束与Numpy数组动态特性之间的矛盾。
当前可用的替代方案
如果迫切需要这类形状注解能力,可以尝试以下途径:
- 使用第三方库如
beartype或pydantic,它们支持结合PEP 646对Numpy数组进行形状校验和注解; - 基于
numpy.typing.NDArray结合自定义类型变量实现简化的形状注解(虽无法完全达到PEP 646示例的直观程度),示例代码如下:from typing import TypeVar, Generic import numpy as np from numpy.typing import NDArray Shape = TypeVar("Shape") Dtype = TypeVar("Dtype", bound=np.generic) class Array(Generic[Shape, Dtype]): def __getitem__(self, key) -> NDArray[Dtype]: ... def to_gray(videos: Array["Time, Batch, Height, Width, Channels", np.uint8]) -> Array["Time, Batch, Height, Width", np.uint8]: ...
后续关注方向
建议跟踪Numpy官方更新日志及核心仓库的相关PR,尤其是numpy.typing模块的迭代动态。一旦有可变泛型支持的规划或原型实现,通常会通过这些渠道公示。
内容的提问来源于stack exchange,提问作者Hylke
相关产品推荐
相关产品推荐

