首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >可以用自定义的dtype对np.ndarray进行注释吗?

可以用自定义的dtype对np.ndarray进行注释吗?
EN

Stack Overflow用户
提问于 2022-04-19 04:26:31
回答 1查看 145关注 0票数 3

我们可以使用类似记录的属性创建自定义dtype

代码语言:javascript
运行
复制
dt = np.dtype([('R','u1'), ('G','u1'), ('B','u1'), ('A','u1')])

我们可以使用注释ndarray的数据类型进行类型提示:

代码语言:javascript
运行
复制
numpy.typing.NDArray = numpy.ndarray[typing.Any, numpy.dtype[+ScalarType]]

但是,我想不出如何提示数组应该具有自定义的dtype,例如,a: NDArray[dt]会导致Pylance抱怨:

代码语言:javascript
运行
复制
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对象创建类型,或者在numpy.ndarray[typing.Any, numpy.dtype[+ScalarType]]中+ScalarType意味着什么。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2022-04-20 02:13:34

具有如下所示的复合dtype的数组:

代码语言:javascript
运行
复制
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 )的元素

代码语言:javascript
运行
复制
In [101]: type(arr[0])
Out[101]: numpy.void
In [102]: arr.dtype
Out[102]: dtype([('R', 'u1'), ('G', 'u1'), ('B', 'u1'), ('A', 'u1')])
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/71919677

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档