如何解决使用包含数组的单个结构化元素创建数组
我有这样的dtype:
>>> dt = np.dtype([('x',object,3)])
>>> dt
dtype([('x','O',(3,))])
一个名为“ x”的字段,包含三个指针。我想用这种类型的单个元素构造一个数组:
>>> a = np.array([(['a','b','c'])],dtype=dt)
>>> b = np.array([(np.array(['a','c'],dtype=object))],dtype=dt)
>>> c = np.array((['a','c']),dtype=dt)
>>> d = np.array(['a',dtype=dt)
>>> e = np.array([([['a','c']])],dtype=dt)
所有这五个语句都会产生相同的错误结果:
array([[(['a','a','a'],),(['b','b'],(['c','c',)]],dtype=[('x',))])
如果我尝试删除内部列表/数组,则会出现错误:
>>> f = np.array([('a','c')],dtype=dt)
ValueError: could not assign tuple of length 3 to structure with 1 fields.
发生相同的错误
>>> g = np.array(('a','c'),dtype=dt)
我已经用尽所有可能的组合尝试。我寻找的结果是
array([(['a',)],))])
如何创建一个具有指定dtype元素的数组?
到目前为止,我发现的唯一方法是手动分配:
z = np.empty(1,dtype=dt)
z['x'][0,:] = ['a','c']
OR
z[0]['x'] = ['a','c']
对于np.array
应该可以立即使用的东西来说,这似乎是不必要的解决方法。
解决方法
In [44]: dt = np.dtype([('x',object,3)]) # corrected
In [45]: dt
Out[45]: dtype([('x','O',(3,))])
In [46]: np.empty(3,dt)
Out[46]:
array([([None,None,None],),([None,)],dtype=[('x',))])
In [47]: np.array([(['a','b','c'],dt)
Out[47]: array([(['a',))])
输入格式应与输出格式匹配。
In [48]: arr = np.empty(3,dt)
In [49]: arr['x']
Out[49]:
array([[None,[None,None]],dtype=object)
In [50]: arr['x'][0]
Out[50]: array([None,dtype=object)
In [51]: arr['x'][0] = ['a','c']
In [52]: arr
Out[52]:
array([(['a',))])
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。