我需要将一列数据添加到 numpy rec 数组中。我在这里看到了很多答案,但它们似乎不适用于只包含一行的 rec 数组......
假设我有一个 rec 数组x
:
>>> x = np.rec.array([1, 2, 3])
>>> print(x)
rec.array((1, 2, 3),
dtype=[('f0', '<i8'), ('f1', '<i8'), ('f2', '<i8')])
我想将该值附加4
到具有自己的字段名称和数据类型的新列中,例如
rec.array((1, 2, 3, 4),
dtype=[('f0', '<i8'), ('f1', '<i8'), ('f2', '<i8'), ('f3', '<i8')])
如果我尝试使用正常append_fields
方法添加一列;
>>> np.lib.recfunctions.append_fields(x, 'f3', 4, dtypes='<i8',
usemask=False, asrecarray=True)
然后我最终得到
TypeError: len() of unsized object
事实证明,对于只有一行的 rec 数组,len(x)
不起作用,而x.size
确实起作用。如果我改为使用np.hstack()
,我会得到TypeError: invalid type promotion
,如果我尝试np.c_
,我会得到不想要的结果
>>> np.c_[x, 4]
array([[(1, 2, 3), (4, 4, 4)]],
dtype=(numpy.record, [('f0', '<i8'), ('f1', '<i8'), ('f2', '<i8')]))