首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何在ndarray中定义字典结构

如何在ndarray中定义字典结构
EN

Stack Overflow用户
提问于 2014-12-01 11:54:05
回答 2查看 77关注 0票数 0

我想要创建一个三维数组,数组中的每个值表示一个字典。

例如:myArray[m][n][k]类型为{'position':(0,0), 'boundary': [(8,8)(512,512)]}

我知道,可以通过在dtype中指定numpy.ndarray参数来定义

代码语言:javascript
复制
numpy.ndarray(shape=(m, n, k), dtype=...)

什么是dtype来指定正确的字典语法,如上面所示

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2014-12-01 11:59:18

AFAIK没有。最好的方法是定义dtype = object (例如,如果您尝试设置dtype=dict ),然后手动填充它。没有什么能确保字典的结构(如您所称的“语法”)--您可以为此使用一个类。

但是,请注意,numpy是针对标量变量优化的,您的用法非常奇怪。

票数 2
EN

Stack Overflow用户

发布于 2014-12-01 17:14:38

如果只需要命名列,且列集是不可变的,则可以使用记录数组:

代码语言:javascript
复制
In [30]: arr = np.zeros((3,3), dtype=[('position', 'f8', 2),
                                      ('boundary', 'i8', (2,2))]); arr
Out[30]: 
array([[([0.0, 0.0], [[0, 0], [0, 0]]), ([0.0, 0.0], [[0, 0], [0, 0]]),
        ([0.0, 0.0], [[0, 0], [0, 0]])],
       [([0.0, 0.0], [[0, 0], [0, 0]]), ([0.0, 0.0], [[0, 0], [0, 0]]),
        ([0.0, 0.0], [[0, 0], [0, 0]])],
       [([0.0, 0.0], [[0, 0], [0, 0]]), ([0.0, 0.0], [[0, 0], [0, 0]]),
        ([0.0, 0.0], [[0, 0], [0, 0]])]], 
      dtype=[('position', '<f8', (2,)), ('boundary', '<i8', (2, 2))])

In [31]: arr['boundary'][0] = [[1,2], [3,4]]

In [32]: arr
Out[32]: 
array([[([0.0, 0.0], [[1, 2], [3, 4]]), ([0.0, 0.0], [[1, 2], [3, 4]]),
        ([0.0, 0.0], [[1, 2], [3, 4]])],
       [([0.0, 0.0], [[0, 0], [0, 0]]), ([0.0, 0.0], [[0, 0], [0, 0]]),
        ([0.0, 0.0], [[0, 0], [0, 0]])],
       [([0.0, 0.0], [[0, 0], [0, 0]]), ([0.0, 0.0], [[0, 0], [0, 0]]),
        ([0.0, 0.0], [[0, 0], [0, 0]])]], 
      dtype=[('position', '<f8', (2,)), ('boundary', '<i8', (2, 2))])
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/27227851

复制
相关文章

相似问题

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