Python/Numpy - 合并 1d 数组每"row"中的 2 个项目



我有一个简短的问题:

我有一个这样的数组:

array([('A', 'B'),
('C', 'D'),
dtype=[('group1', '<U4'), ('group2', '<U4')])

我想像这样将group1group2合并为 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')])

最新更新