我正在尝试为科学 python 项目创建一些数组类型。到目前为止,我已经为 1D、2D 和 ND numpy 数组创建了泛型类型:
from typing import Any, Generic, Protocol, Tuple, TypeVar
import numpy as np
from numpy.typing import _DType, _GenericAlias
Vector = _GenericAlias(np.ndarray, (Tuple[int], _DType))
Matrix = _GenericAlias(np.ndarray, (Tuple[int, int], _DType))
Tensor = _GenericAlias(np.ndarray, (Tuple[int, ...], _DType))
第一个问题是 mypy 说 Vector
、Matrix
和 Tensor
不是有效类型(例如当我尝试 myvar: Vector[int] = np.array([1, 2, 3])
时)
第二个问题是我想创建一个我想像这样使用的泛型 Batch
:Batch[Vector[(10,), complex]]
应该像 Matrix[complex]
,Batch[Matrix[float]]
应该像 Tensor[float]
和 Batch[Tensor[int]
应该像 Tensor[int]
。我不确定“应该像”是什么意思我想我的意思是 mypy 不应该抱怨。
我怎么知道这个?