可以np.可以用自定义的dtype注释数组吗?



我们可以创建具有类似记录属性的自定义dtype:

dt = np.dtype([('R','u1'), ('G','u1'), ('B','u1'), ('A','u1')])

可以通过注释narray的数据类型来获得类型提示:

numpy.typing.NDArray = numpy.ndarray[typing.Any, numpy.dtype[+ScalarType]]

然而,我不知道如何暗示数组应该有一个自定义dtype,例如a: NDArray[dt]导致Pylance抱怨:

Declared return type, "ndarray[Any, dtype[Unknown]]", is partially unknown Pylance(reportUnknownVariableType)
Illegal type annotation: variable not allowed unless it is a type alias Pylance(reportGeneralTypeIssues)

我想我要问的是,如果有可能从dtype对象创建类型,或者+ScalarType在numpy.ndarray[typing.Any, numpy.dtype[+ScalarType]]中意味着什么。

复合dtype的数组:

In [98]: dt = np.dtype([('R','u1'), ('G','u1'), ('B','u1'), ('A','u1')])
In [99]: arr = np.ones(3, dt)
In [100]: arr
Out[100]: 
array([(1, 1, 1, 1), (1, 1, 1, 1), (1, 1, 1, 1)],
dtype=[('R', 'u1'), ('G', 'u1'), ('B', 'u1'), ('A', 'u1')])

类型为np.void的数组元素

In [101]: type(arr[0])
Out[101]: numpy.void
In [102]: arr.dtype
Out[102]: dtype([('R', 'u1'), ('G', 'u1'), ('B', 'u1'), ('A', 'u1')])

最新更新