我有一个简短的问题:
我有一个像这样的数组:
array([('A', 'B'),
('C', 'D'),
dtype=[('group1', '<U4'), ('group2', '<U4')])
我想像这样将group1
和group2
合并为1:
array([('A_B'),
('C_D'),
dtype=[('group3', '<U4')])
我尝试了与其他答案不同的方法,例如:
array_test = np.array([])
for group in array_test:
combi = np.append(combi,np.array(group[0]+"_"+group[1]))
这确实为我提供了一个我想要的新数组,但是当我尝试将其添加到数组中时,出现一个错误,我无法弄清(不真正知道它的含义):
np.append(test_array, combi, axis=1)
numpy.AxisError: axis 1 is out of bounds for array of dimension 1
我也尝试了concaternate的其他方法,但是它给出了相同的错误
有人可以帮我吗?
答案 0 :(得分:1)
该错误表示您尝试沿着第二维(shape(n,)
)将一维数组(axis=1
)附加到另一个一维数组,这是不可能的,因为您的数组只有一个维。>
但是,如果不指定轴(或axis=0
),则最终只能得到像array(['A_B', 'C_D'])
这样的一维数组。要获得请求的结构化数组,您需要创建一个新数组,例如np.array(combi, dtype=[('group3', '<U4')])
。
您可以不循环地进行相同的矢量化处理:
np.array(np.char.add(np.char.add(a['group1'], '_'), a['group2']), dtype=[('group3', '<U4')])