我有一个像这样的数据类型:
>>> 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', 'b', 'c'], dtype=object))], dtype=dt)
>>> c = np.array((['a', 'b', 'c']), dtype=dt)
>>> d = np.array(['a', 'b', 'c'], dtype=dt)
>>> e = np.array([([['a', 'b', 'c']])], dtype=dt)
所有这五个语句都会产生相同的错误结果:
array([[(['a', 'a', 'a'],), (['b', 'b', 'b'],), (['c', 'c', 'c'],)]],
dtype=[('x', 'O', (3,))])
如果我尝试删除内部列表/数组,则会收到错误:
>>> f = np.array([('a', 'b', 'c')], dtype=dt)
ValueError: could not assign tuple of length 3 to structure with 1 fields.
同样的错误发生在
>>> g = np.array(('a', 'b', 'c'), dtype=dt)
我已经用完了所有可能的组合来尝试。我正在寻找的结果是
array([(['a', 'b', 'c'],)], dtype=[('x', 'O', (3,))])
如何创建一个包含指定数据类型的一个元素的数组?
到目前为止,我发现的唯一方法是手动分配:
z = np.empty(1, dtype=dt)
z['x'][0, :] = ['a', 'b', 'c']
或者
z[0]['x'] = ['a', 'b', 'c']
np.array对于应该能够开箱即用的东西来说,这似乎是一个不必要的解决方法。
暮色呼如
相关分类