我有一个简短的问题:
我有一个这样的数组:
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
我也尝试了其他东西,但它给出了同样的错误
有人可以帮助我吗?
该错误意味着您尝试将一维数组(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')])